使用 cronjob 自动备份和删除项目目录

使用 cronjob 自动备份和删除项目目录

我正在尝试使用 cronjob 备份一个目录,位置:/mnt/project/每 24 小时一次,以及父目录内的另一个目录,位置:/mnt/project/uploadDocuments/每 3 小时一次。

以下是脚本:每天午夜进行应用程序备份

#!/bin/bash
var=$(date '+%d-%b-%Y')
source=/mnt/project/
mkdir /root/Backup/"$var"
dest=/root/Backup/"$var"/
rootdest=/root/Backup/
rsync -atu $source $dest;

每天每 3 小时上传文件备份

#!/bin/bash
var=$(date '+%d-%b-%Y')
source=/mnt/project/uploadDocuments/
dest=/root/Backup/"$var"/uploadDocuments/
rsync -atu $source $dest;

上述脚本可以很好地备份目录,但我无法编写自动删除脚本,因为备份目录存储了以下相同的时间戳参考: 参考

由于目录具有相同的时间戳,我无法使用以下命令自动删除超过 7 天或 10 天的目录:

find $rootdest -mindepth 1 -maxdepth 1 -type d -ctime +10 | xargs rm -rf

提前致谢。

答案1

呵呵。刚刚写了一个完整的答案,但结果却让事情变得比原本更复杂。rsync这是最有可能的罪魁祸首。

在您rsync尝试之后。可能会将时间戳更改为。touch$destrsync$source

至于修复已经存在的,你可以ctime使用进行调整debugfs,但你需要有驱动器卸载做到这一点(/root除非您的根目录是单独安装的,否则在您有备份驱动器的情况下实际上不可能)。

这可能会奏效:

debugfs -w -R "set_inode_field /root/Backup/$var ctime $(date +%s)" /dev/sdX

附言:答案很复杂,因为我一开始就没有看到rsync,并且认为你的系统分配出了问题ctime

相关内容