rsync是Linux、UNIX系統下的數據鏡像備份工具,它的特性以下:
一、能夠鏡像保存整個目錄樹和文件系統。
二、能夠很容易作到保持原來文件的權限、時間、軟硬連接等等。
三、無須特殊權限便可安裝。
四、優化的流程,文件傳輸效率高。
五、能夠使用rcp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接。
六、支持匿名傳輸。服務器
今天就利用rsync+crontab來實現Linux服務器間的定時增量備份。
環境說明:
工做服務器A:IP地址 192.168.1.86,操做系統 CentOS 5.5,已創建用戶 tom
備份服務器B:IP地址 192.168.1.87,操做系統 CentOS 5.5,已創建用戶 jack(uid 503, gid 503)
實現目的:
天天早上3點,將A服務器上的用戶目錄/home,自動備份到B服務器的/home/jack/backup-A下,備份增量進行,不須要任何用戶交互。
配置步驟:
一、配置備份服務器B
1)[root@Server-B ~]# rpm -qa| grep rsync #查看是否有rsync包
rsync-2.6.8-3.1
以上輸出說明rsync已經裝好了,保證/etc/services有下面的行
2)rsync的rpm包自己沒有附帶rsyncd的配置文件,須要手動建立它(/etc/rsyncd.conf)
[root@Server-B ~]# vi /etc/rsyncd.conf
3)修改/etc/xinetd.d/rsync,打開rsync服務
[root@Server-B ~]# vi /etc/xinetd.d/rsync
4)開啓rsyncd服務,並設置系統啓動時,加載rsync服務
[root@Server-B ~]# /usr/bin/rsync --daemon
5)檢驗rsync服務是否啓動成功
有以下內容表示已經成功啓動
6)配置ssh的非交互式登陸
思路:服務器A生成一對RSA密鑰,本身保留私鑰,將私鑰附加到登陸服務器B的authorized_keys中,A登陸B,以及進行A到B的rsync就不用交互式輸入密碼了。
>>在服務器A上生成一對密鑰(以root的身份執行)
>>遠程登陸到備份服務器B上而且建立.ssh目錄。
[root@Server-A ~]# ssh jack@192.168.1.87
…
[jack@Server-B ~]$ mkdir .ssh;chmod 0700 .ssh
>>在A機上執行遠程拷貝公鑰到B機:
[root@Server-A ~]# scp .ssh/id-rsa.pub root@192.168.1.87: /home/jack/.ssh/authorized_keys
這樣,無交互的ssh登陸就完成了。特別注意的是B服務器的.ssh目錄權限,最好是700,若是賦予它過多的權限,無交互登陸可能不生效!
7)編制備份腳本
在服務器A上編寫一個備份腳本,放置在/home/tom/public_scripts下,名爲backup.sh
#!/bin/sh
TARGET_DIR=backup-A
for SOURCE_DIR in 「/home」
do
echo 「Backing up $SOURCE_DIR …」
rsync -au –delete $SOURCE_DIR jack@192.168.1.87:/home/jack/$TARGET_DIR
done
[root@Server-A public_scripts]# chmod 755 backup.sh
該腳本權限設置爲755,以便其餘用戶可訪問到。
8)修改計劃任務
在服務器A上,用root身份執行如下命令
[root@Server-A ~]# crontab -e
3 * * * * /home/tom/public_scripts/backup.shssh