遠程文件系統備份工具:Rsnapshot

jopen 10年前發布 | 17K 次閱讀 Rsnapshot

Rsnapshot是一款開源本地/遠程文件系統備份實用工具,它采用Perl語言編寫而成,充分利用了Rsync和SSH程序的功能,可以針對Linux/Unix文件系統創建預定的增量備份,同時只占用了一套單個完全備份的空間(外加變化的數據),并將本地驅動器上的那些備份存放到不同的硬盤驅動器、外置USB驅動器、NFS掛載驅動器上,或者干脆經由 SSH,通過網絡存放到另一臺機器上。

安裝Rsnapshot備份工具

本文將演示如何安裝、設置及使用rsnapshot,

以創建增量的每小時、每天、每周和每月的本地

備份,以及創建遠程備份。想執行本文中介紹的

所有步驟,你必須是根用戶(root user)。

第一步:在Linux下安裝rsnapshot備份工具

如果你使用基于紅帽和Debian的發行版,那

么使用Yum和APT(高級打包工具)安裝

rsnapshot可能略有不同。

在紅帽企業級Linux(RHEL)/CentOS上

首先,你得安裝并啟用名為EPEL的第三方軟

件庫。請點擊這個鏈接,在你的RHEL/CentOS

系統下安裝并啟用第三方軟件庫。Fedora用戶不

需要任何特別的軟件庫配置。一旦你完成了設置

工作,就可以從命令行來安裝rsnapshot,如下所

示。

# yum install rsnapshot 

在Debian/Ubuntu/Linux Mint上

默認情況下,rsnapshot已包含在Ubuntu的軟件

庫中,所以你可以使用apt-get命令來安裝它,如

下所示。

# apt-get install rsnapshot 

第二步:設置無需密碼的SSH登錄機制

想備份遠程Linux服務器上的內容,你的

rsnapshot備份服務器就要能夠通過SSH來連接,

而不需要密碼。為了做到這一點,你就需要創建

SSH公共密鑰和私有密鑰,以便在rsnapshot服務

器上驗證身份。請點擊下面這個鏈接,以便在你

的rsnapshot備份服務器上生成公共密鑰和私有密

鑰。

《使用SSH密鑰生成器,創建無需密碼的SSH

登錄機制》(http://www.tecmint.com/sshpasswordless-login-using-ssh-keygen-in-5-easy-steps/

)。

第三步:配置rsnapshot

現在你需要編輯,并為rsnapshot配置文件添加

一些參數。使用vi或nano編輯器,打開rsnapshot.

conf文件。

# vi /etc/rsnapshot.conf 

下一步,創建一個你想要把所有備份內容存

放在其中的備份目錄。以本文為例,我的備份目

錄位置是”/data/backup/”。尋找并編輯下面這

個參數,以設定備份位置。

snapshot_root /data/backup/ 

另外,取消”cmd_ssh”這一行的注釋,允許

通過SSH進行遠程備份。想取消這一行的注釋,

請去除下面這一行前面的”#”,那樣rsnapshot

就能將數據安全地傳送到備份服務器上。

cmd_ssh /usr/bin/ssh 

接下來,你要確定想保留多少的舊備份,因

為rsnapshot不知道你想多頻繁地拍取快照。你要

指定保存多少數據、添加保存數據的時間間隔以

及每個間隔有多久。

好了,默認設置足夠好了,但我還是希望你

啟用”monthly”(每月)時間間隔,那樣你還

能擁有更長期的備份。請編輯這個部分,以便看

起來類似下面的設置。

#############################

# 備份間隔 # 

# 必須具有獨特性,而且按照升序排列 # 

# 即按照每小時、每天、每周等備份 # 

#############################

interval hourly 6 

interval daily 7 

interval weekly 4 

interval monthly 3 

另外你還需要編輯的是”ssh_args”這個變

量。如果你將默認的SSH端口(22)改成了別的

端口號,就要指定你那臺遠程備份服務器的那個

端口號。

ssh_args -p 7851 

最后,添加你想要備份的本地和遠程備份目

錄。

備份本地目錄

如果你已決定將目錄本地備份到同一臺機器

上,備份條目應該看起來像這樣。比如說,我要

備份我的/tecmint目錄和/etc目錄。

backup /tecmint/ localhost/ 

backup /etc/ localhost/ 

備份遠程目錄

如果你想備份遠程服務器目錄,那么你要告

訴rsnapshot服務器在哪里、你又想備份哪些目

錄。我在這里要備份rsnapshot服務器上”/data/

backup”目錄下的遠程服務器”/home”目錄。

backup root@example.com:/home/ /data/

backup/ 

排除文件和文件夾

這里,我要排除一切內容,然后只專門定義

我想要備份什么內容。為此,你需要創建一個排

除文件。

# vi /data/backup/tecmint.exclude 

首先獲得你想要備份的目錄列表,然后添加

(- *),以排除其他所有目錄。這只會備份你在

文件中所列的內容。我的排除文件看起來像下面

這樣。

+ /boot 

+ /data 

+ /tecmint 

+ /etc 

+ /home 

+ /opt 

+ /root 

+ /usr 

- /usr/* 

- /var/cache 

+ /var 

- /* 

由于使用了rsync遞歸,使用排除文件選項可

能很棘手。所以,我上面這個示例可能不是你所

要找的。

接下來,將排除文件添加到rsnapshot.conf文

件。

exclude_file /data/backup/tecmint.exclude 

最后,你的初始配置幾乎已完成了。在進一

步操作之前,先保存"/etc/rsnapshot.conf"配置文

件。有許多選項需要解釋,但下面是我的示例配

置文件。

config_version 1.2 

snapshot_root /data/backup/ 

cmd_cp /bin/cp 

cmd_rm /bin/rm 

cmd_rsync /usr/bin/rsync 

cmd_ssh /usr/bin/ssh 

cmd_logger /usr/bin/logger 

cmd_du /usr/bin/du 

interval hourly 6 

interval daily 7 

interval weekly 4 

interval monthly 3 

ssh_args -p 25000 

verbose 2 

loglevel 4 

logfile /var/log/rsnapshot/ 

exclude_file /data/backup/tecmint.exclude 

rsync_long_args --delete --numeric-ids 

--delete-excluded 

lockfile /var/run/rsnapshot.pid 

backup /tecmint/ localhost/ 

backup /etc/ localhost/ 

backup root@example.com:/home/ /data/

backup/ 

所有上述選項和參數的解釋如下:

config_version 1.2 = 配置文件版本 

snapshot_root = 存儲快照的備份目的地 

cmd_cp = 拷貝命令路徑 

cmd_rm = 刪除命令路徑 

cmd_rsync = rsync路徑 

cmd_ssh = SSH路徑 

cmd_logger = 系統日志的外殼命令接口路徑 

cmd_du = 磁盤使用命令路徑 

interval hourly = 保留多少的每小時備份 

interval daily = 保留多少的每天備份 

interval weekly = 保留多少的每周備份 

interval monthly = 保留多少的每月備份 

ssh_args = 可選的SSH變量,比如不同的端口

(-p) 

verbose = 不需要加以說明 

loglevel = 不需要加以說明 

logfile = 日志文件路徑 

exclude_file = 排除文件路徑(下面會更詳細地

解釋) 

rsync_long_args = 傳遞到rsync的長變量 

lockfile = 不需要加以說明 

backup = 備份項的完整路徑,后跟位置的相

對路徑 

第四步:驗證rsnapshot配置

一旦你完成了所有的配置工作,就需要驗證

一切都按預期的那樣在運作。運行下面這個命

令,驗證你的配置使用了正確語法。

# rsnapshot configtest 

Syntax OK 

要是一切配置正確,你會收到”Syntax OK”

(語法正確)的消息。要是你收到了任何錯誤的

消息,那就意味著你需要在運行rsnapshot之前,

先糾正那些錯誤。

接下來,對其中一個快照測試一番,確保我

們在生成正確的結果。我們拿”hourly”(每小

時)這個參數,使用-t(測試)參數進行一番測

試。下面這個命令會顯示冗長列表,表明該命令

要執行的一系列操作,但又不實際執行這些操

作。

# rsnapshot -t hourly 

示例輸出:

echo 2028 > /var/run/rsnapshot.pid 

mkdir -m 0700 -p /data/backup/ 

mkdir -m 0755 -p /data/backup/hourly.0/ 

/usr/bin/rsync -a --delete --numeric-ids --relative 

--delete-excluded /home \ 

/backup/hourly.0/localhost/ 

mkdir -m 0755 -p /backup/hourly.0/ 

/usr/bin/rsync -a --delete --numeric-ids --relative 

--delete-excluded /etc \ 

/backup/hourly.0/localhost/ 

mkdir -m 0755 -p /data/backup/hourly.0/ 

/usr/bin/rsync -a --delete --numeric-ids --relative 

--delete-excluded \

/usr/local /data/backup/hourly.0/localhost/ 

touch /data/backup/hourly.0/ 

注意:上面這個命令指令rsnapshot創建一

個”hourly”備份。它實際上輸出了我們在實際

執行該命令時它會執行的那些命令。

第五步:手動運行rsnapshot

驗證了結果后,你可以去除”-t”選項,實際

運行這個命令。

# rsnapshot hourly 

上面這個命令會運行備份腳本,連同我們添

加在rsnapshot.conf文件中的所有配置,創建一

個”backup”目錄,然后在它下面創建組織管理

我們那些文件的目錄結構。在運行上面這個命令

后,你可以進入到備份目錄來驗證結果,然后使

用ls -l命令列出目錄結構,如下所示。

command as shown. 

# cd /data/backup 

# ls -l 

total 4 

drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0 

第六步:讓過程自動化

為了讓這個過程自動化,你就需要通過Cron

計劃任務工具,安排rsnapshot按某些時間間隔運

行。默認情況下,rsnapshot在”/etc/cron.d/

rsnapshot”下隨帶cron文件;要是這個文件不存

在,就創建一個,然后將下面幾行添加到該文

件。

默認情況下,規則被注釋,所以你要去除計

劃部分前面的”#”,以便啟用這些值。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!