如何每两小时对一个目录中所有新生成的文件进行压缩,并将已压缩的文件移动到另一个目录

如何每两小时对一个目录中所有新生成的文件进行压缩,并将已压缩的文件移动到另一个目录

/kit/bkp文件将在 /kit 目录中每 5 分钟生成一次。想要每 2 小时打包所有文件并将这些文件移动到目录

答案1

find your_path -t f -mmin 5 -exec tar -zcvf your_compress_file.tar.gz {} +

您可以制作一个脚本并将脚本放入crontab.

答案2

编写一个脚本并将其设置为与 cron 作业或 systemd 计时器一起运行。tar在脚本中包含适当的命令并使用 tar 的排除标志以避免/tar/bkp对文件夹进行去皮。并find与该-mmin 120标志一起使用,将压缩的文件限制为最近 120 分钟内修改的文件。

例如:

#!/bin/bash
source='/kit'
dest='/kit/bkp'
find "${source}" -mmin 120 -exec \
  tar cpf "${dest}/$(date +'%Y%m%d%H').tar" --exclude="${dest}" {} +

该脚本将使用 执行/bin/bash,定义源路径和目标路径,仅选择过去 120 分钟内修改过的文件,然后在目标文件夹中创建一个以年-月-日-小时命名的 tar 文件,保留权限和所有权,并排除目标文件夹。

然后crontab -e以具有读取和执行权限的用户身份键入/kit...写入、读取和执行权限/kit/bkp...以及对我们之前创建的脚本的读取和执行权限。在 cron 文件中添加如下行:

0 */2 * * * /path/to/your/script.sh > /dev/null

这将每 2 小时运行一次脚本,并通过管道将 stdout 发送到以/dev/null保持脚本静默,除非它产生错误。如果发生错误,Cron 应该向您发送消息。

相关内容