我正在尝试编写一个 shell 脚本,以便对每天形成的文件夹进行 tar 备份。
例如,我的父目录名称是“log”,并且在此目录下将每天自动创建一个目录,并且所有子目录(每天形成)将每小时创建几个日志文件。
主要目的:我想通过保留最近 20 天的日志文件对子目录(每天创建,目录名称为 01、02、03、04、......、31)进行 tar 备份。这意味着在 30 天的目录中,只应对前 10 天进行 tar 备份。
find /usr/local/aryan/2015/logs -iname ".log" -mtime +10 -exec tar -cvzf backup_1.tar.gz" "VARIABLE_FOLDER_NAME" '{}' \;
请帮我替换“VARIABLE_FOLDER_NAME”,它实际上将具有每天创建的文件夹名称。
通过上述命令,它将找到所有扩展名为 .log 且在过去 10 天内未修改的文件。现在我想备份所有包含扩展名为 .log 的文件的文件夹
答案1
文件夹名称是否已创建或者是否需要创建?
如果您每个日期都创建一个新文件夹,那么请执行以下操作
VARIABLE_FOLDER_NAME=`date '+%d'`
mkdir -f $VARIABLE_FOLDER_NAME
它每天都会创建一个以该月日期命名的文件夹。
如果您希望名称填充为零,请尝试以下操作
DATE_OF_MONTH=`date '+%d'`
VARIABLE_FOLDER_NAME=`printf "%02d" $DATE_OF_MONTH"
这些都可以在一行中完成,例如:
DATE_OF_MONTH=`date '+%d'`; VARIABLE_FOLDER_NAME=`printf "%02d" $DATE_OF_MONTH"; find /usr/local/aryan/2015/logs -iname ".log" -mtime +10 -exec tar -cvzf backup_1.tar.gz "VARIABLE_FOLDER_NAME" '{}' \;
您可能还考虑将 xpath 与 find 命令结合使用,以使 tar 运行得更快。
如果文件夹已经创建,那么您只需要弄清楚如何选择哪一个。