tar 命令在 shell 脚本中生成错误

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 会生成此错误以及如何解决它?

答案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 的文件名解释为本地文件,即使它看起来像远程磁带驱动器名称。

相关内容