根据 linux 系统上压缩文件的年份和月份,使用文件名创建压缩存档
Create compressed archive with filename based on year and month of compressed files on linux system
我想压缩和存档(例如 zip 或 tar.gz)很多文件,这些文件都存储在 / 文件夹中。
它应该创建类似 yyyy-mm-backup.zip 的存档文件,包括在该时间范围内修改的所有原始文件。
示例文件:
fileA.txt (modified date 2020-12-01)
fileB.txt (modified date 2020-12-02)
fileC.txt (modified date 2021-01-01)
应该创建归档文件:
2020-12-backup.zip (include fileA.txt and fileB.txt)
2021-01-backup.zip (include fileC.txt)
这可以通过单个 zip 或 tar 命令实现吗?或者我需要脚本还是使用 logrotate?
将 find 命令的输出重定向到 while 循环
while read line;
do
dattim=${line%%/*};
filpath=${line#*/};
echo "zip -r $dattim-backup.zip $filpath";
# zip -r "$dattim-backup.zip" "$filpath"
done <<< "$(find /path/to/directory -name "*.txt" -printf "%TY-%Tm/%h/%f\n")"
查找所有扩展名为 txt 的文件,并以带“/”、前导目录、“/”和文件名的概述格式打印修改日期。通过 while 循环处理输出。将 date/time 标记提取到变量 dattim 中,并将文件路径提取到变量 filpath 中。使用这些变量生成将文件添加到日期 zip 文件的命令。
验证 echo 是否按预期显示命令,然后删除注释标志以执行实际的 zip 命令。
我想压缩和存档(例如 zip 或 tar.gz)很多文件,这些文件都存储在 / 文件夹中。 它应该创建类似 yyyy-mm-backup.zip 的存档文件,包括在该时间范围内修改的所有原始文件。
示例文件:
fileA.txt (modified date 2020-12-01)
fileB.txt (modified date 2020-12-02)
fileC.txt (modified date 2021-01-01)
应该创建归档文件:
2020-12-backup.zip (include fileA.txt and fileB.txt)
2021-01-backup.zip (include fileC.txt)
这可以通过单个 zip 或 tar 命令实现吗?或者我需要脚本还是使用 logrotate?
将 find 命令的输出重定向到 while 循环
while read line;
do
dattim=${line%%/*};
filpath=${line#*/};
echo "zip -r $dattim-backup.zip $filpath";
# zip -r "$dattim-backup.zip" "$filpath"
done <<< "$(find /path/to/directory -name "*.txt" -printf "%TY-%Tm/%h/%f\n")"
查找所有扩展名为 txt 的文件,并以带“/”、前导目录、“/”和文件名的概述格式打印修改日期。通过 while 循环处理输出。将 date/time 标记提取到变量 dattim 中,并将文件路径提取到变量 filpath 中。使用这些变量生成将文件添加到日期 zip 文件的命令。
验证 echo 是否按预期显示命令,然后删除注释标志以执行实际的 zip 命令。