Shell-Script
tar 命令在 shell 腳本中生成錯誤
我正在嘗試在 shell 腳本中創建一個 tar 球(我已啟用
set -x
),但出現以下錯誤:+ cd /home5/mysite/public_html + TAR_DUMP=gypo_2012-02-18-03:51:15.tar.gz + echo 'Tar name: gypo_2012-02-18-03:51:15.tar.gz' Tar name: gypo_2012-02-18-03:51:15.tar.gz + tar -cvzf gypo_2012-02-18-03:51:15.tar.gz gypo ... tar: gypo_2012-02-18-03\:44\:04.tar.gz: Cannot open: Input/output error tar: Error is not recoverable: exiting now ...
腳本是:
NOW=$(date +"%Y-%m-%d-%T") # TAR cd $HOME/public_html TAR_DUMP="gypo_$NOW.tar.gz" echo "Tar name: $TAR_DUMP" tar -cvzf $TAR_DUMP gypo # mv -t $DEST $TAR_DUMP
為什麼 tar 會產生此錯誤,我該如何解決?
文件名中的
:
令人困惑tar
。至少對於 的coreutils
版本tar
,--file
開關可以採用以下形式的參數:hostname:/remote/file/name
所以我猜想
tar
試圖以一種不是你的意思的方式解釋該文件名。
./
使用(或指定完整路徑)為文件名添加前綴應該可以解決您的問題。TAR_DUMP="./gypo_$NOW.tar.gz" echo "Tar name: $TAR_DUMP" tar -cvzf $TAR_DUMP gypo
另一個解決方法是添加
--force-local
開關。
--force-local
強制 `tar’ 將提供給 –file 的文件名解釋為本地文件,即使它看起來像遠端磁帶驅動器名稱。