像蘋果Time Machine 一樣備份Linux伺服器(基於rsync)

使用感受

n

Time Machine這東西用過macOS的都知道,可以說是數據備份神器。前幾天我誤刪了幾個文件,還好我有設置Time Machine自動備份,於是我打開Time Machine,點幾下滑鼠,文件就回來了!我想要是能用來備份Linux伺服器那該多好啊,特別是像我這種喜歡亂改配置文件然後又從來不備份的人!於是我Google了一下,果然GitHub已經有大神寫好腳本啦!於是乎馬上開始折騰……

nn

GitHub項目鏈接:laurent22/rsync-time-backup

n

n

我的備份方式是外接硬碟。這個腳本我用了幾天,感覺Time Machine的特性都具備了,而且磁碟滿的時候可以自動清理最早的備份,許可權、硬鏈接全部正常,覺得應該完美了。最重要的是不用配置複雜的rsync(我也不會配置),可以說是Linux版的Time Machine!

n

---

環境

n

操作系統:CentOS 7.3.1611

備份介質掛載點:/backup

備份介質文件系統:ext4

n

n

---

配置步驟

n

1.下載腳本文件

n

[root: ~]# git clone laurent22/rsync-time-backup #使用git下載整個項目n

[root: ~]# cp ~/rsync-time-backup/rsync_tmbackup.sh ~/rsync_tmbackup.shn[root: ~]# chmod +x ~/rsync_tmbackup.sh #賦予腳本執行許可權n

腳本文件基本用法

n

rsync_tmbackup.sh <備份源> <備份目標> [排除文件列表]

n

2.創建備份排除列表

n

如果要備份根目錄的話,必須指定一個篩選列表來排除根目錄所在分區外的文件被備份。

n

[root: ~]# cat /root/rsync_tmbackup.txtn

- /mntn- /backupn- /devn- /procn#排除/mnt、/backup、/dev、/procn

配置文件的格式跟rsync的一致,可以按照我上面的格式寫。rsync的用法這裡也不再贅述。

n

3.在備份目標上創建一個標記點

n

在非rsync伺服器上進行備份時,必須先創建一個標記點,否則備份將無法進行。使用rsync或者scp方式備份的可能不用(自己沒試過)。

n

[root: ~]# touch "/backup/backup.marker"n

4.開始備份

n

[root: ~]# /root/rsync_tmbackup.sh / /backup /root/rsync_tmbackup.txtn

不出意外的話,下面就開始刷屏了。

n

5.設置整點自動備份

n

[root: ~]# crontab -en

在文件末尾添加

n

0 */1 * * * flock -n /tmp/backup.lock -c "/root/rsync_tmbackup.sh / /backup /root/rsync_tmbackup.txt" > /dev/null 2>&1n

這裡建議使用文件鎖功能來防止備份時間超過一小時而導致rsync進程重複運行。

n

6、運行幾天看看結果

n

曬一曬我的備份目錄。我這裡設置的是每天8點到22點整點備份。

n

[root: ~]# ll /backupn總用量 80Kndrwxr-xr-x 16 root root 4.0K 4月 29 15:00 .ndr-xr-xr-x. 20 root root 4.0K 4月 29 08:21 ..ndr-xr-xr-x 3 root root 4.0K 4月 29 14:04 2017-04-28-170001ndr-xr-xr-x 15 root root 4.0K 4月 26 22:11 2017-04-28-180002ndr-xr-xr-x 15 root root 4.0K 4月 26 22:11 2017-04-28-190001ndr-xr-xr-x 15 root root 4.0K 4月 26 22:11 2017-04-28-200001ndr-xr-xr-x 15 root root 4.0K 4月 26 22:11 2017-04-28-210001ndr-xr-xr-x 15 root root 4.0K 4月 26 22:11 2017-04-28-220001ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-080002ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-100002ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-110003ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-120002ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-130001ndr-xr-xr-x 16 root root 4.0K 4月 29 08:21 2017-04-29-140002ndr-xr-xr-x 15 root root 4.0K 4月 29 08:21 2017-04-29-150002n-rw-r--r-- 1 root root 6 4月 29 15:20 backup.inprogressn-rw-r--r-- 1 root root 0 4月 27 07:59 backup.markernlrwxrwxrwx 1 root root 17 4月 29 14:13 latest -> 2017-04-29-140002ndrwx------ 2 root root 16K 4月 26 22:10 lost+foundn

下面是macOS的

n

[zenandidi: ~]$ ls -l /Volumes/Time Machine/Backups.backupdb/餘澤楠的MacBook Pro ntotal 8ndrwxr-xr-x@ 21 root wheel 714B 4 29 15:03 .ndrwxr-xr-x@ 6 root wheel 204B 2 8 18:01 ..ndrwxr-xr-x@ 6 root wheel 204B 4 27 07:04 2017-04-27-070433ndrwxr-xr-x@ 6 root wheel 204B 4 28 09:21 2017-04-28-092124ndrwxr-xr-x@ 6 root wheel 204B 4 28 15:01 2017-04-28-150135ndrwxr-xr-x@ 6 root wheel 204B 4 28 16:00 2017-04-28-160028ndrwxr-xr-x@ 6 root wheel 204B 4 28 16:56 2017-04-28-165654ndrwxr-xr-x@ 6 root wheel 204B 4 28 17:55 2017-04-28-175554ndrwxr-xr-x@ 6 root wheel 204B 4 28 18:56 2017-04-28-185654ndrwxr-xr-x@ 6 root wheel 204B 4 28 20:08 2017-04-28-200806ndrwxr-xr-x@ 6 root wheel 204B 4 28 21:17 2017-04-28-211735ndrwxr-xr-x@ 6 root wheel 204B 4 28 22:45 2017-04-28-224546ndrwxr-xr-x@ 6 root wheel 204B 4 29 07:05 2017-04-29-070534ndrwxr-xr-x@ 6 root wheel 204B 4 29 08:05 2017-04-29-080531ndrwxr-xr-x@ 6 root wheel 204B 4 29 08:50 2017-04-29-085018ndrwxr-xr-x@ 6 root wheel 204B 4 29 09:54 2017-04-29-095453ndrwxr-xr-x@ 6 root wheel 204B 4 29 11:03 2017-04-29-110311ndrwxr-xr-x@ 6 root wheel 204B 4 29 13:04 2017-04-29-130419ndrwxr-xr-x@ 6 root wheel 204B 4 29 14:12 2017-04-29-141247ndrwxr-xr-x@ 4 root wheel 136B 4 29 15:03 2017-04-29-150331.inProgressnlrwxr-xr-x 1 root wheel 17B 4 29 14:12 Latest -> 2017-04-29-141247n

模擬度已經非常高了!

n

7.恢復

n

這裡恢復的話當然沒有像macOS那樣可以用漂亮的GUI啦!我們直接用cp命令將備份時間點裡面的文件恢復過去就好了。

n

[root: ~]# cp -rfp /backup/2017-04-29-080002/etc/* /etc/ #恢復整個/etc目錄n

沒試過全盤恢復,全盤恢復的話用啟動盤啟動之後複製過去應該是可以的。

n

---

注意事項

n1、如果需要使用samba網路備份的話,必須在上面建立一個虛擬的磁碟映像,然後創建一個ext4文件系統再掛載,否則所有的硬鏈接將不可用,許可權也無法保存。

2、ACL許可權貌似無法備份。

3、如果要使用網路磁碟的話,推薦使用NFS,或者直接備份到其他的rsync伺服器上。

4、腳本可能會更新,更新之後的用法可能會改變,請以GitHub項目上的最新說明為準。

5、本文為個人使用經驗,沒有進行深度測試,有錯誤請提出,謝謝。


推薦閱讀:

你的Ubuntu還可以這麼美
重磅推薦:10個你非常熟悉的Linux終端遊戲
Linux 下的 C++ 開發和 Windows 環境下的開發有什麼區別?
Linux系統各種目錄的作用
生信自學之linux操作基礎

TAG:Linux | Linux运维 | 运维 |