在此代码中,该excludespec
变量应与它的所有子字符串匹配,但它似乎在执行时评估匹配它的实际文件,而不是将其精确表示传递给使用它的 tar 命令。
excludespec=${PWD##*/}\_$USER\_`hostname`.bkcd_backup*
最终结果是正在创建的存档与排除列表不匹配,因此 tar 输出:
tar: .: file changed as we read it
定义它的字符串是否在做我不知道的事情?
这是代码:
#!/bin/sh
# bkcd - backup current directory in situ
DMY_M() {
date +%Y%m%d_%H%M
}
timestring=$(DMY_M)
echo `pwd` - $timestring > .bkcdspec
filename=${PWD##*/}\_$USER\_`hostname`.bkcd_backup.$timestring.tar.gz
excludespec=${PWD##*/}\_$USER\_`hostname`.bkcd_backup*
fullexclude="$excludespec"tar.gz
echo excludespec - $excludespec
echo filename - $filename
echo fullexclude - $fullexclude
tar -cpzf $filename --exclude=$fullexclude .
rm .bkcdspec