我正在尝试在 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 会生成此错误以及如何解决它?
答案1
:
文件名中的 令人 困惑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 的文件名解释为本地文件,即使它看起来像远程磁带驱动器名称。