Shell

tar unix 不改變目錄

  • November 24, 2017

我正在執行一個 tar 命令來壓縮另一個目錄中存在的文件。

我執行了以下命令:

tar -czf /backupmnt/abc.tar.gz -C /backupmnt/statusService/ *

我想創建 abc.tar.gz 文件,/backupmnt其中應包含/backupmnt/statusService/目錄中的所有文件,但出現以下錯誤:

tar: components: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

components存在於我正在執行命令的目前目錄中。下面是內容/backupmnt/statusService

SS-01:/ # ls /backupmnt/statusService
MJ.netact.xml.tar.gz      gmoTemp_fm.tar.gz  mr.properties.tar.gz  probe.properties.tar.gz  relay_logs.tar.gz  ss_logs.tar.gz  tomcat_conf.tar.gz
esymac_config.txt.tar.gz  gmoTemp_pm.tar.gz  o2ml.tar.gz           probes_logs.tar.gz       ss_conf.tar.gz     ss_pm.tar.gz    tomcat_logs.tar.gz

我無法找到我錯的地方。

*``tar在執行之前由 shell 擴展。因此,tar更改目錄會使*擴展的參數無效。您可以簡單地告訴tar壓縮目錄:

tar -czf /backupmnt/abc.tar.gz -C /backupmnt/statusService/ .

.代表目前目錄,當改變目錄時會改變tar。這將導致隱藏文件(以 開頭的文件.)包含在存檔中。

為什麼不使用顯式目錄更改?

cd /backupmnt/statusService && tar -czf /backupmnt/abc.tar.gz *

或者您可以使用相對路徑:

cd /
tar -czf /backupmnt/abc.tar.gz backupmnt/statusService1/* backupmnt/statusService2/* backupmnt/statusService3/*

這可能是更好的解決方案,因為您將文件分隔在文件夾中並避免覆蓋重複的文件名

引用自:https://unix.stackexchange.com/questions/199038