【发布时间】:2017-04-24 20:39:00
【问题描述】:
我正在尝试 tar 超过 3 天的文件。我查看了现有问题creating tar file and naming by current date,但是当我运行脚本时,文件不会被修改。有人有什么建议吗?
# Tar files older than 3 days
files=($(find /this/is/my_path/ -type f -mtime +3))
tar -cvfz backup.tar.gz "${files[@]}"
if [ ! -f ${LOGFILE}.tar.gz ]; then
Error checking
if [ $? -ne 0 ]; then
Process_Error $ERROR_SUM "This file had a problem $FILE!"
fi
fi
}
【问题讨论】:
-
尝试
-cvzf您当前正在创建一个名为z的文件。 -
另外,
files=($(find /this/is/my_path/ -type f -mtime +3))不能处理名称中带有空格的文件(some file.txt将变成两个条目,some和file.txt)。而/this/is/my_path/ * IMPORTANT *.txt会将第一个*替换为当前目录中的文件列表,并将*.txt替换为文本文件列表。 -
@user7915836 顺便说一句,
${LOGFILE}.tar.gz和$ERROR_SUM没有被引用也可能存在问题——shellcheck.net 会检测到。顺便说一句,考虑使用小写变量名——请参阅pubs.opengroup.org/onlinepubs/9699919799/basedefs/… 上的相关 POSIX 约定,为对 OS 和 shell 有意义的变量名指定全大写名称,并保留小写字符的名称以供应用程序使用。 (因为设置与环境变量同名的 shell 变量会覆盖后者,所以相同的约定适用于两者)。