linux 命令 rsync

rsync
1、rsync簡介
用於替代rcp的一個工具,rsync能夠經過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時rsync server會開一個873端口,等待客戶端去鏈接,鏈接時,rsync server會檢查口令是否相符,若經過口令查覈,則能夠經過進行文件傳輸,第一次連通完成時,會把整份文件傳輸一次,之後則就只需進行增量備份;

2、rsync經常使用參數
-v,--verbose  詳細模式輸出;
-a,--archive  歸檔模式,表示以遞歸的方式傳輸文件,並保持全部文件屬性不變,至關於使用了組合參數-rlptgoD;
-r, --recursive 對子目錄以遞歸模式處理;
-l, --links 保留軟鏈結;
-p, --perms 保持文件權限;
-t, --times 保持文件時間信息;
-g, --group 保持文件屬組信息;
-o, --owner 保持文件屬主信息;
-D, --devices 保持設備文件信息;
-H, --hard-links 保留硬鏈結;
-S, --sparse 對稀疏文件進行特殊處理以節省DST的 空間;
--delete 刪除那些DST中SRC沒有的文件;
-z, --compress 對備份的文件在傳輸時進行壓縮處理;

3、rsync的六種不一樣的工做模式;
1)拷貝本地文件;
當SRC和DES路徑信息中不包含冒號":"分隔符時,就啓用這種工做模式:
[root@cmmailapp1 /]# rsync -avSH /home/coremail/ /cmbak/

2)使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器,當DST路徑地址包括冒號":"分隔符時啓動該模式;
[root@cmmailapp1 /]# rsync -avSH /home/coremail/ 192.168.11.12:/home/coremail/

3)使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器,當SRC地址路徑包括冒號":"分隔符時啓動該模式;
[root@cmmailapp2 /]# rsync -avSH 192.168.11.11:/home/coremail/ /home/coremail/

4)從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動該模式。
如:rsync -av root@172.16.78.192::www /databack

5)從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓動該模式。
如:rsync -av /databack root@172.16.78.192::www

6)列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信息便可。
如:rsync -v rsync://192.168.11.11/data

4、rsync服務端的配置;
環境:192.168.11.11爲生產機;192.168.11.12爲備份機;
那麼須要192.168.11.11須要做爲rsync的client;
192.168.11.12做爲rsync的service端;

1192.168.11.12_service端的配置;
1)[root@cmmailapp2 data]# touch /etc/rsyncd.conf  //此文件爲rsync的主配置問題,默認不存在須要手動建立;
2)定義同步的配置;
[root@cmmailapp2 data]# cat /etc/rsyncd.conf 
[data]
path = /data/
auth users = coremail
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no

[mysql]
Path = /home/coremail/var/mysql            
auth users = coremail
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no

[cmxt]
Path = /home/coremail/          
auth users = coremail
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no

3)定義密碼文件/etc/rsyncd.secrets
[root@cmmailapp2 data]# cat  /etc/rsyncd.secrets 
coremail:coremail

4)啓動rsync啓動服務
[root@cmmailapp2 data]# cat /etc/xinetd.d/rsync 
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = yes           //須要修改成no;
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

[root@cmmailapp2 data]# chkconfig --level 2345 rsync on
[root@cmmailapp2 data]# chkconfig rsync on
[root@cmmailapp2 data]# chkconfig --level 2345 xinetd on
[root@cmmailapp2 data]# service xinetd restart
Stopping xinetd: [  OK  ]
Starting xinetd: [  OK  ]

2192.168.11.11_client端的配置;
[root@cmmailapp1 /]# cat /etc/rsyncd.secrets 
coremail

[root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data
[root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql
[root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt

5、定義定時自行rsync同步,指定同步的日誌所在的路徑/var/log/rsync/下;
[root@cmmailapp1 log]# cat /root/rsync.sh 
DATE=`date +%Y%m%d%H%M`
rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data >/var/log/rsync.date.$DATE
rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql >/var/log/rsync.mysql.$DATE
rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt >/var/log/rsync.cmxt.$DATE

chmod u+x /root/rsync.sh

[root@cmmailapp1 log]# crontab -l
0 3 * * * /root/rsync.sh

執行時候的日子記錄文件:
[root@cmmailapp1 log]# ls |grep 'rsync'
rsync.cmxt.201110180915
rsync.date.201110180915
rsync.mysql.201110180915

服務器端必須啓動,客戶端無須啓動。且服務器端密碼文件形式每行一個賬號:密碼,客戶端密碼文件形式只有一個密碼mysql

#rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/
把源路徑中遠端test機器上的/home/ftp/pub/目錄中的內容,經過rsync同步到本地的/home/ftp/pub/目錄下。 
◎當心源路徑結尾時候的/號,後綴/通知rsync複製該目錄的內容,但不復制目錄自己。例如: 
Code:
#rsync -ave ssh test:/home/ftp/pub /home/ftp/
則會把pub目錄整個同步到本地/home/ftp/路徑中 

 

配置rsync 同步數據 rpm包安裝rsync及配置


[root@Hammer home]# rpm -qa |grep rsync #檢查系統是否安裝了rsync軟件包
rsync-2.6.8-3.1
[root@Hammer CentOS]# rpm -ivh rsync-2.6.8-3.1.i386.rpm # 若是沒有安裝則手動安裝

[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync 


1 配置rsync servervi /etc/xinetd.d/rsync
將disable=yes改成no

service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

2 配置rsync自動啓動
[root@test etc]# chkconfig rsync on
[root@test etc]# chkconfig rsync --list
rsync on

3 配置rsyncd.conf 
[root@test etc]# vim rsyncd.conf 

uid = root
gid = root
use chroot = no
max connections = 4
strict modes = yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[backup]
path = /srv
comment = This is test
auth users = scihoo
uid = root
gid = root
secrets file = /home/rsync.ps
read only = no
list = no


4 確保etc/services中rsync端口號正確
[root@test etc]# vim /etc/services
rsync 873/tcp # rsync
rsync 873/udp # rsync

5 配置rsync密碼(在上邊的配置文件中已經寫好路徑)/home/rsync.ps(名字隨便寫,只要和上邊配置文件裏的一致便可),格式(一行一個用戶)
[root@test etc]# vi /home/rsync.ps 
scihoo:scihoo

6 配置rsync密碼文件權限
[root@test home]# chown root.root rsync.ps 
[root@test home]# chmod 400 rsync.ps (只有該用戶可讀寫)

7 啓動配置
[root@test home]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]

8 若是xinetd沒有的話,須要安裝一下
[root@test home]# yum -y install xinetd


啓動rsync server
RSYNC服務端啓動的兩種方法
9、啓動rsync服務端(獨立啓動)
[root@test home]# /usr/bin/rsync --daemon

10、啓動rsync服務端 (有xinetd超級進程啓動)
[root@test home]# /etc/init.d/xinetd reload

11 加入rc.local
在各類操做系統中,rc文件存放位置不盡相同,能夠修改使系統啓動時把rsync --daemon加載進去。
[root@test home]# vi /etc/rc.local
/usr/local/rsync –daemon #加入一行

12 檢查rsync是否啓動
[root@test home]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd 4396 root 5u IPv4 633387 TCP *:rsync (LISTEN)




客戶端配置
1 配置三個過程就能夠了
1.1 設定密碼文件
1.2 測試rsync執行指令
1.3 將rsync指令放入工做排程(crontab)
[root@aj1 home]# vi /etc/xinetd.d/rsync 

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

1.1 配置密碼文件 (注:爲了安全,設定密碼檔案的屬性爲:600。rsync.ps的密碼必定要和Rsync Server密碼設定案裏的密碼同樣)
[root@aj1 home]# vi rsync.ps 
sciooo

[root@aj1 home]# chown root.root .rsync.ps # 注意必須給權限
[root@aj1 home]# chmod 600 .rsync.ps # 必須修改權限 不然會提示錯誤信息 password file must not be other-accessible 1.2 從服務器上下載文件
[root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps scihoo@192.168.0.206::backup /home/

從本地上傳到服務器上去
[root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps /home scihoo@192.168.0.206::backup
相關文章
相關標籤/搜索