一伐脖、rsync的概述
rsync是類unix系統(tǒng)下的數(shù)據(jù)鏡像備份工具汉操,從軟件的命名上就可以看出來了——remote sync淑际。rsync是Linux系統(tǒng)下的文件同步和數(shù)據(jù)傳輸工具走搁,它采用“rsync”算法辛燥,可以將一個(gè)客戶機(jī)和遠(yuǎn)程文件服務(wù)器之間的文件同步筛武,也可以在本地系統(tǒng)中將數(shù)據(jù)從一個(gè)分區(qū)備份到另一個(gè)分區(qū)上。如果rsync在備份過程中出現(xiàn)了數(shù)據(jù)傳輸中斷挎塌,恢復(fù)后可以繼續(xù)傳輸不一致的部分徘六。rsync可以執(zhí)行完整備份或增量備份。它的主要特點(diǎn)有:
1.可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)榴都;
2.可以很容易做到保持原來文件的權(quán)限待锈、時(shí)間、軟硬鏈接嘴高;無須特殊權(quán)限即可安裝竿音;
3.可以增量同步數(shù)據(jù),文件傳輸效率高阳惹,因而同步時(shí)間短谍失;
4.可以使用rcp、ssh等方式來傳輸文件莹汤,當(dāng)然也可以通過直接的socket連接快鱼;
5.支持匿名傳輸,以方便進(jìn)行網(wǎng)站鏡象等纲岭;
6.加密傳輸數(shù)據(jù)抹竹,保證了數(shù)據(jù)的安全性;
-v是“--verbose”,即詳細(xì)模式輸出止潮; -z表示“--compress”窃判,即傳輸時(shí)對(duì)數(shù)據(jù)進(jìn)行壓縮處理;
-r表示“--recursive”喇闸,即對(duì)子目錄以遞歸的模式處理袄琳;-t是“--time”询件,即保持文件時(shí)間信息;
-o表示“owner”唆樊,用來保持文件屬主信息宛琅;-p是“perms”,用來保持文件權(quán)限逗旁;
-g是“group”嘿辟,用來保持文件的屬組信息;
--progress用于顯示數(shù)據(jù)鏡像同步的過程片效;
--delete選項(xiàng)指定以rsync服務(wù)器端為基礎(chǔ)進(jìn)行數(shù)據(jù)鏡像同步红伦,也就是要保持rsync服務(wù)器端目錄與客戶端目錄的完全一致;
--exclude選項(xiàng)用于排除不需要傳輸?shù)奈募愋停?br>
rsync的優(yōu)點(diǎn)與不足
與傳統(tǒng)的cp淀衣、tar備份方式對(duì)比昙读,rsync具有安全性高、備份迅速膨桥、支持增量備份等優(yōu)點(diǎn)箕戳,通過rsync可以解決對(duì)實(shí)時(shí)性要求不高的數(shù)據(jù)備份需求,例如国撵,定期地備份文件服務(wù)器數(shù)據(jù)到遠(yuǎn)端服務(wù)器,對(duì)本地磁盤定期進(jìn)行數(shù)據(jù)鏡像等玻墅。
但是隨著系統(tǒng)規(guī)模的不斷擴(kuò)大介牙,rsync的缺點(diǎn)逐漸被暴露了出來。首先澳厢,rsync做數(shù)據(jù)同步時(shí)环础,需要掃描所有文件后進(jìn)行對(duì)比,然后進(jìn)行差量傳輸剩拢。如果文件很大线得,掃面文件是非常耗時(shí)的,而且發(fā)生變化的文件往往是很少一部分徐伐,因此rsync是非常低效的方式贯钩。其次,rsync不能實(shí)時(shí)監(jiān)測(cè)办素、同步數(shù)據(jù)角雷,雖然它可以通過Linux守護(hù)進(jìn)程的方式觸發(fā)同步,但是兩次觸發(fā)動(dòng)作一定會(huì)有時(shí)間差性穿,可能導(dǎo)致服務(wù)器端和客戶端數(shù)據(jù)出現(xiàn)不一致
在對(duì)rsync服務(wù)器配置結(jié)束以后勺三,下一步就需要在客戶端發(fā)出rsync命令來實(shí)現(xiàn)將服務(wù)器端的文件備份到客戶端來。rsync是一個(gè)功能非常強(qiáng)大的工具需曾,其命令也有很多功能特色選項(xiàng)吗坚,我們下面就對(duì)它的選項(xiàng)一一進(jìn)行分析說明祈远。
Rsync的命令格式可以為以下六種:
對(duì)應(yīng)于以上六種命令格式,rsync有六種不同的工作模式:
1)拷貝本地文件商源。當(dāng)SRC和DES路徑信息都不包含有單個(gè)冒號(hào)":"分隔符時(shí)就啟動(dòng)這種工作模式车份。如:rsync -a /data /backup
2)使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來實(shí)現(xiàn)將本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器炊汹。當(dāng)DST路徑地址包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式躬充。如:rsync -avz *.c foo:src
3)使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器讨便。當(dāng)SRC地址路徑包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式充甚。如:rsync -avz foo:src/bar /data
4)從遠(yuǎn)程rsync服務(wù)器中拷貝文件到本地機(jī)。當(dāng)SRC路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式霸褒。如:rsync -av root@172.16.78.192::www /databack
5)從本地機(jī)器拷貝文件到遠(yuǎn)程rsync服務(wù)器中伴找。當(dāng)DST路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式。如:rsync -av /databack root@172.16.78.192::www
6)列遠(yuǎn)程機(jī)的文件列表废菱。這類似于rsync傳輸撕氧,不過只要在命令中省略掉本地機(jī)信息即可。如:rsync -v rsync://172.16.78.192/www
從本地機(jī)器拷貝文件到遠(yuǎn)程rsync服務(wù)器中任洞。當(dāng)DST路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式座云。如:
rsync -av /databack root@192.168.78.192::www
列遠(yuǎn)程機(jī)的文件列表。這類似于rsync傳輸旁理,不過只要在命令中省略掉本地機(jī)信息即可樊零。如:
# rsync -auvz --progress --delete --bwlimit=1000 遠(yuǎn)程文件 本地文件 //限制為1000kBytes/s
# rsync -auvz --progress --delete --bwlimit=2048 遠(yuǎn)程文件 本地文件 //限制為2M/s
--------scp同步時(shí)的限流(-l參數(shù))--------
# scp -l 1024 file root@192.168.1.100 //限制為1M Bytes/s
編譯安裝:
cd /usr/local
wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz
tar -zxvf rsync-3.1.2.tar.gz
cd rsync-3.1.2
./configure --prefix=/usr/local/rsync --disable-ipv6
make
make install
ln -s /usr/local/rsync/bin/rsync /usr/local/bin/rsync
vim /usr/local/rsync/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
pid = root
gid = root
use chroot = no
max connections = 200
timeout 600
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
secrets file = /usr/local/rsync/rsyncd.secrets
motd file = /etc/rsyncd.motd
[test]
path = /test/
ignore errors
read only = true
list = false
hosts allow = *
hosts deny = 0.0.0.0/32
auth users root #該用戶系統(tǒng)中存在且對(duì)后面指定的備份目錄擁有權(quán)限
comment = ocpyang test
vi /usr/local/rsync/rsyncd.motd
++++++++++++++++++++++++++++++++++++
Wlecome to ocpyang rsync services
++++++++++++++++++++++++++++++++++++
vi /usr/local/rsync/rsyncd.secrets (--指定rsync訪問的密碼,密碼不需要和系統(tǒng)賬號(hào)密碼相同)
root:tiange1003
ln -s /usr/local/rsync/rsyncd.conf /etc/rsyncd.conf
ln -s /usr/local/rsync/rsyncd.motd /etc/rsyncd.motd
ln -s /usr/local/rsync/rsyncd.secrets /etc/rsyncd.secrets
chmod 600 /usr/local/rsync/rsyncd.secrets
chown root:root /usr/local/rsync/rsyncd.secrets
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf (啟動(dòng)rsync)
echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
cat /etc/rc.d/rc.local
至此服務(wù)器的配置已經(jīng)完成,可以在服務(wù)器端的的根目錄下創(chuàng)建test目錄孽文,并且在目錄里面創(chuàng)建1.sh文件
客戶端的配置驻襟,先編譯安裝好rsync
vim /etc/rsyncd.secrets (在這個(gè)目錄下將剛才在服務(wù)器端創(chuàng)建的密碼填寫到這個(gè)里面)
tiange1003
chmod 600 /etc/rsyncd.secrets
rsync -vzrtopg --progress --delete root@192.168.40.129::test/2.sh /tmp/ (在客戶端執(zhí)行這個(gè)命令將服務(wù)器端/test目錄下2.sh這個(gè)文件復(fù)制到客戶端的/tmp目錄下)
rsync -vzrtopg --progress --delete root@192.168.40.129::test /ocpyang/ --password-file=/etc/rsyncd.pwd
至此rsync服務(wù)器搭建成功,也驗(yàn)證成功
下來新建同步腳本
vim /rsync.sh
#!/bin/bash
rsync -vzrtopg --progress --delete root@192.168.40.129::test/2.sh /tmp/
rsync -vzrtopg --progress --delete root@192.168.40.129::test /ocpyang/ --password-file=/etc/rsyncd.pwd
自動(dòng)同步(每隔五分鐘同步一次)
#crontab -e
0,5 * * * * ./rsync.sh