遠程文件系統備份工具 Rsnapshot

安裝Rsnapshot備份工具

本文將演示如何安裝、設置及使用rsnapshot,以建立增量的每小時、天天、每週和每個月的本地備份,以及建立遠程備份。想執行本文中介紹的全部步驟,你必須是根用戶(root user)。shell

第一步:在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命令來安裝它,如下所示。less

# 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/運維

)。ssh

第三步:配置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」(每個月)時間間隔,那樣你還能擁有更長期的備份。請編輯這個部分,以便看起來相似下面的設置。url

#############################
# 備份間隔 # 
# 必須具備獨特性,並且按照升序排列 # 
# 即按照每小時、天天、每週等備份 # 
#############################
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文件;要是這個文件不存在,就建立一個,而後將下面幾行添加到該文件。

默認狀況下,規則被註釋,因此你要去除計劃部分前面的」#」,以便啓用這些值。


轉自 《Linux運維趨勢》

相關文章
相關標籤/搜索