Shell
tar unix 不改變目錄
我正在執行一個 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/*
這可能是更好的解決方案,因為您將文件分隔在文件夾中並避免覆蓋重複的文件名