gpt4 book ai didi

ubuntu - 每 5 小时更新一次 crontab 以 tar 新的/更新的文件

转载 作者:行者123 更新时间:2023-12-04 19:07:45 27 4
gpt4 key购买 nike

我正在尝试为 crontab 创建一个命令来压缩每个新/更新的文件(从 cron 上次运行时开始)。 cron 必须每 5 小时运行一次。

  • 我要备份文件夹/home/swayraines中的所有文件包括其子文件夹
  • 我想用这些文件在这里保存一个 tar folder/backup/back.tar
  • crontab 必须每隔 运行一次。 5 小时
  • 仅是 的文件自上次添加或编辑 执行的 cron 需要添加到存档中。因此,除非它是新的/编辑的,否则不应保存。
  • 我想将结果保存在带有 stdout 和 stderr 的日志中 folder/backup/backlog.log

  • 所以我认为最好的方法是 find在过去 5 小时内添加/编辑的文件,然后是 tar这些文件,在 .log 中输出 stdout 和 stderr 之前,但它不起作用,我不确定出了什么问题。
    这是到目前为止的样子(更新为包括部分答案):
      0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
    更新
    问题是现在每次 crontab 运行时它都会创建一个新的 tar 存档,并且存档只包含添加的最新文件。
    更新 2
    为了清楚起见,我一开始说我想每 5 小时创建一个新存档,但我想更新存档并仅附加新文件。所以我相信我需要将 tar 命令更改为 -uvf ?

    最佳答案

    使用带符号的数字作为参数。 300 表示恰好在 300 分钟前修改。 -300 不到 300 分钟前。 +300 将是 300 多分钟前。
    更新 1 -exec 的参数必须以 \; 结尾,像这样:

     0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
    这将毫无问题地运行,但是当它一次对 1 个文件执行命令时,您最终只会将它操作的最后一个文件压缩到 tar 文件中。建议您编写命令将文件复制到临时目录,压缩临时目录,然后删除临时目录。
    更新 2
    正确的。您可以使用 -r --append-u --update如果要将更改的文件附加到 tar 文件的末尾,但必须先创建 tar 文件。如果文件不存在,它将不会创建该文件。需要注意的是,这些命令不会覆盖以前的版本,因此如果您不需要两个版本,您应该使用 --delete首先,然后附加新版本。
    另外,请注意,这不是压缩的 tar 文件。如果不取消/重新压缩,您将无法更新压缩的 tar 文件。这就是为什么你不能合并 -z-ur选项。

    关于ubuntu - 每 5 小时更新一次 crontab 以 tar 新的/更新的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65084528/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com