Jér*_*nge 7 tar shell-script filenames
我正在尝试在 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
...
Run Code Online (Sandbox Code Playgroud)
脚本是:
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
Run Code Online (Sandbox Code Playgroud)
为什么 tar 会产生此错误,我该如何解决?
将:
在文件名的混乱 tar
。至少对于 的coreutils
版本tar
,--file
开关可以采用以下形式的参数:
hostname:/remote/file/name
Run Code Online (Sandbox Code Playgroud)
所以我猜tar
是试图以一种不是你的意思的方式解释那个文件名。
为文件名添加前缀./
(或指定完整路径)应该可以解决您的问题。
TAR_DUMP="./gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
Run Code Online (Sandbox Code Playgroud)
另一个解决方法是添加--force-local
开关。
--force-local
强制 `tar' 将提供给 --file 的文件名解释为本地文件,即使它看起来像远程磁带驱动器名称。