我想对名称可变的目录进行 tar 备份

我想对名称可变的目录进行 tar 备份

我正在尝试编写一个 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 运行得更快。

如果文件夹已经创建,那么您只需要弄清楚如何选择哪一个。

相关内容