我正在尝试使用 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
$dest
rsync
$source
至于修复已经存在的,你可以ctime
使用进行调整debugfs
,但你需要有驱动器卸载做到这一点(/root
除非您的根目录是单独安装的,否则在您有备份驱动器的情况下实际上不可能)。
这可能会奏效:
debugfs -w -R "set_inode_field /root/Backup/$var ctime $(date +%s)" /dev/sdX
附言:答案很复杂,因为我一开始就没有看到rsync
,并且认为你的系统分配出了问题ctime
。