2011-05-02 55 views
0

我正在讀此版本控制腳本,以便質疑https://stackoverflow.com/questions/38388/organization-wide-backup-strategy與Python

,我很感興趣,運用該系統

版本控制由 Python腳本處理,掃描文件系統 和將更改的文件上傳到中央服務器 。該服務器 上的文件系統廣泛使用Unix樣式的 符號鏈接 - 即只存儲給定文件的 的一個副本, 後續副本簡單地符號鏈接到 。這可以讓你對每天的 備份,而是隻使用 它使用的實際磁盤空間的一小部分創建一個完整的 文件系統(你 只需要足夠的空間用於自上次備份後修改的文件 和 店所有這些符號鏈接)。這是 Mac Time Machine系統使用的一般原則。需要還原舊文件的用戶 可以簡單地瀏覽該文件系統。

任何人都可以給我一些指導方針或教程或一些rready使用Python中的腳本。我想看到的最好的事情就是如何讓每天的虛擬文件系統,而無需使用過多空間

我在python

回答

1

rsync +硬鏈接。

使用rsync維護主備份目錄。 使用CP-AL採取每日/每週/任何快照。

使用硬鏈接意味着重複的文件不會佔用額外的空間,即每個快照只會佔用已更改文件中的空間。此外,每個快照都包含備份和符號鏈接的完整備份,這些備份將被保留。

我有一個用於管理快照的python包裝 - 保留預定義數量的每日,每週,每月和每年快照,但您可以將其保持爲精細或簡單。

的靈感的重要來源在這裏:http://www.mikerubel.org/computers/rsync_snapshots/

更新:

樣品備份:

# generate some test data 
mkdir /tmp/backup 
mkdir documents 
date > documents/file1 
date > documents/file2 

# do the backup 
rsync -av --delete documents /tmp/backup/ 
cp -al /tmp/backup /tmp/backup.$(date +%Y%m%d-%H%M%S) 

現在你應該有一個主備份與當前狀態(/ tmp目錄/備份)和備份/ tmp/backup ..對於下一次備份,只需再次運行rsync和cp:

# modify the test data 
date >> documents/file1 

# do the backup 
rsync -av --delete documents /tmp/backup/ 
cp -al /tmp/backup /tmp/backup.$(date +%Y%m%d-%H%M%S) 

請注意,rsync只會更新已更改的文件,因此就備份時間而言,這已經過優化。由於您正在使用硬鏈接來保存未更改的文件,因此它對於存儲也非常有效。

+0

如果我做備份像你說的,我可以有與/ home相同的文件結構,我不想壓縮,1)我想要未壓縮的備份2)所有增量備份看起來都像主備份一樣,我的意思是當我打開file.txt時,它會打開它,就像它是那天不是。 3)你會喜歡分享該python包裝:) – Mahakaal 2011-05-02 12:47:56

+0

這不是一個壓縮的備份方法;增量備份將是相同的,但您需要以root身份保留所有權;我的包裝使用了一些庫,在這裏效果不佳,但編碼不應太難。 – linuts 2011-05-02 19:25:25

+0

感謝哥們,我會盡力的 – Mahakaal 2011-05-03 01:46:41

0

新手只需使用Mercurial - 用Python寫的一個偉大的源代碼控制系統。這也是目前最流行的SCM之一。

+0

我想通過手寫的腳本而不是任何現成的軟件來做到這一點。我的意思是一個py腳本和cron運行。雖然現成的軟件會更好,但我想學習 – Mahakaal 2011-05-02 09:53:50

+0

@Mahakaal:你有很多東西要學習;-)從學習Python開始 – 2011-05-02 10:02:13

+0

在互聯網上有很多備份解決方案,但編寫bash腳本只需要20行,而已。雖然不完美,但可以做的事情。我正在尋找這樣的解決方案,而不是完整的Fledge包 – Mahakaal 2011-05-02 10:14:37