我想將rsnapshot使用的備份目錄鏡像到第二個位置以獲得更高的安全性。理想的解決方案是使用rsync和ssh。我需要爲rsync提供哪些參數來保留硬鏈接(由rsnapshot創建)和符號鏈接,刪除文件,遞歸複製,刪除目標中的文件等?這些文件都在ext3文件系統上。此外,我可以做些什麼來避免這樣的可能性,即如果源已損壞,那麼這些缺陷會反射到鏡像上?鏡像rsnapshot備份目錄
回答
我認爲在rsync
手冊頁中大部分記錄了要做什麼的選項。特別是,-H
選項(--hard-links
)啓用了硬鏈接檢測,而--delete
將導致rsync刪除目標上源上不存在的內容。因此,也許是這樣的:
rsync -aH --delete /path/to/src/ /path/to/destination
而且我能做些什麼,以避免如果源已損壞的缺陷rsynced鏡子的可能性?
好吧,那很棘手。你如何發現腐敗?我認爲唯一真正的解決方案是錯開備份的備份(即,將您實際備份到主要目標,然後在您的下一次備份運行之前立即將其rsync同步到次要目標)。這樣,如果您檢測到有問題,直到下一次備份運行才能恢復。
一個不同的解決方案是將rsnapshot
備份到多個目標,以便實際上從原始來源生成備份到兩個不同的位置。這樣,如果一個人受到損害,第二個人應該不受影響。
確定所有選項都在手冊頁中。我只是想確保我不會忘記任何事情。但-a選項似乎非常緊湊。由於兩個目的地不會同時可用,因此兩個位置的rsnapshot將不可行。難道只有更新的快照才能與鏡像同步嗎?以這種方式,即使這些位置中的較舊快照在主位置中損壞,它們也會被保留。當然,我需要重複由它添加快照時由rsnapshot執行的重命名... – highsciguy
爲防止損壞數據的複製,您可以保留每週備份,並希望在丟失所有備份之前,您會注意到源處的損壞。最好的方法是使用-c,然後它會比較源和目標的校驗和以確定是否複製文件。唯一的缺點是它必須讀取整個文件,使備份過程更慢。
#!/bin/sh
# Create a Backup of Today
# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)
# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago
mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username
rsync -aHvz /storage/`date --date=yesterday +\%Y-\%m-\%d`-`date --date=yesterday +\%A`/$host/$user/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/
rsync -acHvz -e ssh --delete --exclude='logs' [email protected]:/home/tim/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/
- 1. rsnapshot,多個備份目的地
- 2. 轉錄日誌備份後數據庫鏡像不同步
- 3. Makefile鏡像構建目錄
- 4. 鏡像目錄與Apache htaccess
- 5. 移動Zpanel默認備份目錄或Opendir備份目錄
- 6. shell腳本備份源目錄備份目錄
- 7. pclzip備份兩個目錄
- 8. 文檔目錄和備份
- 9. 備份大文件目錄
- 10. 更改PHP備份目錄
- 11. Python腳本備份目錄
- 12. InstallShield回滾備份目錄?
- 13. 使用rsnapshot和mysqldump來備份遠程mySQL數據庫
- 14. Postfix服務器鏡像(備份服務器)
- 15. sql server 2012鏡像設置多次備份後
- 16. 如何備份/恢復用於部署的Docker鏡像?
- 17. 如何SQL備份或鏡像數據庫?
- 18. 實時「備份」或磁盤鏡像。 Windows Server 2012
- 19. 在DB2中存儲分割鏡像備份
- 20. 備份git repo:歸檔鏡像克隆... tar -Pzcf怎麼辦?
- 21. 簡單的Cronjob備份一個目錄
- 22. 如何備份Alfresco中的alf_data目錄
- 23. 目錄(備份)文件的Bash腳本
- 24. 備份家裏有tar的目錄
- 25. 備份目錄+使用bash重命名
- 26. Java FileUtils複製備份目錄
- 27. WHM備份腳本 - 壓縮目錄
- 28. RestKit和iCloud目錄備份策略
- 29. 棱鏡/ Mef目錄目錄SatisfyImports
- 30. 如何在每次時間戳不同時使用rsnapshot備份SVN存儲庫?
我發現有一個腳本調用rsnapshot拷貝,其旨在用於初始同步:[rsnapshot拷貝](http://cpansearch.perl.org/src/DCANTRELL/App-Rsnapshot-1.999_00002/utils的/ rsnapshot拷貝)。在這個文件的頭文件中,它指出:'rsnapshot-copy當前不適用於增量鏡像快照 root(儘管未來可能會增加增量模式)。「任何想法如何支持? – highsciguy
另一個想法是使用rsnapshot日誌文件(可能首先相應地修改內部日誌記錄例程)來創建一個shell腳本,該腳本執行完全相同的mv和rsync操作,rsync在主備份上也對備份的鏡像副本執行了操作。 – highsciguy
澄清一點,我看到一個正常的rsync問題(見下面的答案)。如果rsnapshot路徑中的文件被破壞(例如由於磁盤故障),由於使用硬鏈接,它將在所有較新的快照中被破壞,除非在稍後改變。這意味着文件丟失了。如果我對備份的鏡像副本執行常規自動rsync,那麼最終我會用其損壞的版本覆蓋文件而不會注意到。問題是如果有解決方案可以避免這種情況。 – highsciguy