Shell-Script

tar 命令在 shell 腳本中生成錯誤

  • January 15, 2017

我正在嘗試在 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 的文件名解釋為本地文件,即使它看起來像遠端磁帶驅動器名稱。

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