Linux
使用 cronjob 自動備份和刪除項目目錄
我正在嘗試備份一個目錄,位置:
/mnt/project/
每 24 小時一次,以及父目錄中的另一個目錄,位置:/mnt/project/uploadDocuments/
每 3 小時使用 cronjob。以下是腳本: 每天午夜應用程序備份
#!/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
提前致謝。
呵呵。剛剛寫了一個完整的答案,讓事情變得比他們應該的更複雜。
rsync
是這裡最有可能的罪魁禍首。在你之後
rsync
,嘗試touch
ing$dest
。很可能將rsync
時間戳更改為$source
.至於修復已經存在的那些,您可以
ctime
使用 進行調整debugfs
,但您需要解除安裝/root
驅動器才能做到這一點(除非您的根目錄單獨安裝,否則在備份驅動器所在的位置實際上是不可能的)。這可能會奏效:
debugfs -w -R "set_inode_field /root/Backup/$var ctime $(date +%s)" /dev/sdX
PS:令人費解的答案是因為我一開始沒有看到
rsync
,並認為您的系統分配ctime
.