Linux

使用 cronjob 自動備份和刪除項目目錄

  • October 22, 2018

我正在嘗試備份一個目錄,位置:/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,嘗試touching $dest。很可能將rsync時間戳更改為$source.

至於修復已經存在的那些,您可以ctime使用 進行調整debugfs,但您需要解除安裝/root驅動器才能做到這一點(除非您的根目錄單獨安裝,否則在備份驅動器所在的位置實際上是不可能的)。

這可能會奏效:

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

PS:令人費解的答案是因為我一開始沒有看到rsync,並認為您的系統分配ctime.

引用自:https://serverfault.com/questions/936557