rsync


什么是rsync

rsync一款快速增量備份工具 Remote Sync,遠程同步 支持本地復制,或者與其他SSH、rsync主機同步。

 

三種主要的傳輸數據的方式

1. 單個主機本地之間的數據傳輸

2. 借助rcp, ssh等通道來傳輸數據

3. 以守護進程(socket)的方式傳輸數據(需要服務端客戶端配合, centos中自帶了客戶端)

 

單個主機本地之間的數據傳輸:

#將a目錄內容同步到b目錄
rsync -r a b

#將/etc/hosts文件復制到/tmp/目錄下
rsync /etc/hosts /tpm/

 

借助ssh通道來傳輸數據:

#將a目錄下內容復制到遠程主機的~/b目錄下
rsync -r a/ -e 'ssh -p 22' huangxm@192.168.0.138:~/b

#將目錄a復制到遠程主機的~/b目錄下,注意與上面的區別
rsync -r a -e 'ssh -p 22' huangxm@192.168.0.138:~/b

它相當與scp命令,同時也需要手動輸入密碼;如果不想手動輸入密碼,可以使用sshpass, 這樣我們就可以寫入crontab,做到定時同步

#安裝sshpass
yum install -y sshpass

#同步目錄a和遠程主機的目錄b
rsync -r a/ -e 'sshpass -pgoitinfo ssh -p22' huangxm@192.168.0.138:~/b

 

常用參數

-v    詳細模式輸出,給出傳輸進度等信息

-z    壓縮傳輸  --compress-level=NUM  指定壓縮級別 1-9, 9是最大壓縮級別

-a    以歸檔方式傳輸,保留文件屬性

        -r    遞歸傳輸

        -t    保持文件時間信息

        -o    保持文件屬主信息

        -p    保持文件權限

        -g    保持文件屬組信息

        -P    顯示同步過程及進度等信息

        -D    保持設備文件信息

        -l      保持軟鏈接

        這些參數加起來等於 –a

-e    使用的信道協議,如ssh

--exclude=PATTERN    指定排除不需要傳輸的文件

--exclude-from=FILE    排除FILE中記錄的文件

--delete   保證兩邊數據完全一樣,如果源里沒有該文件,就在目標目錄刪除

說明:

-avz  相當於 –vzrtopgDl

生產環境中常用: –avz 或 –vzrtopg

 

守護進程模式:

安裝服務端:

#yum install rsync

配置文件:/etc/rsyncd.conf

vim /etc/rsyncd.conf
uid = rsync                        #用戶id
gid = rsync
use chroot = no                    #安全性,內網一般不考慮,設為no
max connections = 200              #最多有多少個客戶端連接我
timeout = 300                      #超時時間,秒
pid file = /var/run/rsyncd.pid     #pid文件
lock file = /var/run/rsync.lock    #傳輸時會給文件加鎖
log file = /var/log/rsyncd.log     #日志文件
[test]                             #模塊
path = /test/                      #客戶端來同步,就是同步該目錄
ignore errors                      #傳輸過程中遇到錯誤,自動忽略
read only = false                  #可讀可寫
list = false                       #不允許列表
hosts allow = 10.0.0.0/24          #允許的IP段
hosts deny = 0.0.0.0/32            #拒絕
auth users = rsync_backup          #這是個虛擬用戶
secrets file = /etc/rsync.password #虛擬用戶對應的密碼文件

 

創建系統用戶rsync用來啟動服務

useradd rsync -s /sbin/nologin
授權
chown -R rsync.rsync /test

 

在/etc/rsync.password中添加虛擬用戶

echo "rsync_backup:1234" > /etc/rsync.password

用戶名和密碼用:分隔。

 

設置權限密碼文件權限

chmod 600 /etc/rsync.password

 

啟動服務端, 以守護進程方式

#rsync --daemon

端口: tcp 873

添加開機啟動

echo "/usr/bin/rsync --daemon" >> /etc/rc.local

 

客戶端:

客戶端只需要密碼文件,文件里只存放密碼:

echo "1234" > /etc/rsync.password

設置文件權限:

chmod 600 /etc/rsync.password

從服務端拉取文件:

rsync -avz rsync_backup@10.0.0.7::/test /data --password-file=/etc/rsync.password

注意:test是指test模塊,也就是服務端配置文件中的[test];而且有兩個冒號。

或者使用rsync協議

rsync -avz rsync://rsync_backup@10.0.0.7/test  /data --password-file=/etc/rsync.password

往服務端推送文件:

rsync -avz /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

 

排除指定文件和目錄

排除文件a:

rsync -avz --exclude=a /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

排除多個文件:

rsync -avz --exclude={a,b} /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

也可以將要排除的文件和目錄寫入一個文件,一行一個:

vim excefile.conf

test.py
*.log
dir1

使用—exclude-from

rsync -avz --exclude-from=excefile.conf /data/ rsync_backup@10.0.07::/test --password-file=/etc/rsync.password

 

在服務端設置要排除的文件:

在配置文件中加上:

exclude=a b c/d      #c/d是指c目錄下的d

重啟:

kill `cat /var/run/rsyncd.pid`

rsync –daemon

 

服務器端共享多個目錄

uid = rsync         #用戶id
 gid = rsync
 use chroot = no     #安全性,內網一般不考慮,設為no
 max connections = 200    #最多有多少個客戶端連接我
 timeout = 300     #超時時間,秒
 pid file = /var/run/rsyncd.pid     #pid文件
 lock file = /var/run/rsync.lock    #傳輸時會給文件加鎖
 log file = /var/log/rsyncd.log     #日志文件
                       
 ignore errors     #傳輸過程中遇到錯誤,自動忽略
 read only = false   #可讀可寫
 list = false    #不允許列表
 hosts allow = 10.0.0.0/24   #允許的IP段
hosts deny = 0.0.0.0/32     #拒絕
auth users = rsync_backup     #這是個虛擬用戶
secrets file = /etc/rsync.password    #虛擬用戶對應的密碼文件
                        
[test]       #模塊
path = /test/    #客戶端來同步,就是同步該目錄
[data]
path = /data/

寫配置文件時,盡量把相同的配置放到公共區域,自己特有的放到自己的模塊下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM