Linux

用於計劃備份的 cron 腳本

  • February 23, 2013

我正在尋找一個可以做一些備份的 cron 腳本。我主要是一名網路開發人員,所以我對 bash/cron 的東西有點陌生。

我希望 cron 每天一次將“filelist.txt”中的所有文件或目錄複製到已安裝的網路儲存驅動器中。理想情況下,它適用於我的所有 3 個盒子,1 個 Fedora、1 個 ubuntu 和 1 個 sunos(每個盒子都有 diff 文件名)

棘手的部分是:我只想保存最近 7 天的備份,並刪除比這更早的備份

我相信有些人可以在這方面有很大的改進,但它可能會讓你開始。

可能會找到您需要的命令來掃描和確定要備份的文件列表,然後根據您的偏好使用 tar、cpio 或 zip 進行歸檔。

我將修改您的規範以掃描目錄而不是單個文件。

假設 /etc/backupdirlist.txt 包含要掃描的目錄列表,/media/backup 是備份媒體(已安裝)的安裝點,/media/backup/backups 是您想要備份的現有目錄並放置文件列表。

如果您在備份過程中使用星期幾作為目標文件名並覆蓋舊文件名,則不難滿足 7 天的要求。

你需要這樣的東西

(注意:未經測試,可能有錯誤,如果它做了一些愚蠢的事情,請道歉,GNU LGPL 許可證和標準免責聲明適用)

我建議一次檢查這個命令,並使用 echo $VAR 檢查變數或使用 less 的文件來查看它的作用。另請閱讀 find 和 cpio 的手冊頁。

#!/bin/bash
DIRLIST=/etc/backupdirlist.txt
DAYOFWEEK=`date +%a`
FILELISTDEST=/media/backup/backups/$DAYOFWEEK.filelist
BACKUPDEST=/media/backup/backups/$DAYOFWEEK.backup.tgz
TIMELIMIT=-1  # says save everything modified less than or equal to one day ago
echo >$FILELISTDEST   # to erase last weeks list
for DIR in `cat $DIRLIST` 
do find $DIR -mtime $TIMELIMIT >>$FILELISTDEST  # >> appends the lists
done
cat $FILELISTDEST | cpio --create --format=ustar | gzip -9 -c >$BACKUPDEST

我還沒有解釋如何將此腳本放入 cron 中,我將把它留給你或其他參與者。首先,在自動化它之前,確保它可以正常工作並按照腳本的方式執行您想要的操作。

在不同的 unix 機器上,製造商版本的標準實用程序(如 find 或 cpio)可能會有所不同。解決這個問題的最好方法是在所有平台上安裝 GNU 版本。Linux 已經有 GNU 版本。

希望這可以幫助!

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