Rsync是一款開源的、快速的、多功能的、可實現全量及增量(全量備份是指所有備份,增量備份是在上一次備份的基礎上只備份更新的內容)的本地貨遠程數據同步備份的優秀工具。Rsync軟件適用於unix/linux/windows等多種操做系統平臺。linux
#rsync 本地模式 Local: rsync [OPTION...] SRC... [DEST] #rsync shell模式 Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST #rsync daemon模式 Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
-vshell |
詳細模式輸出,傳輸時的進度等信息vim |
-zwindows |
傳輸時進行壓縮以提升傳輸效率,--compress-level=NUM可按級別壓縮服務器 |
-aide |
以遞歸方式傳輸文件,並保持全部文件的屬性工具 |
-r測試 |
對子目錄以遞歸模式,即目錄下的全部目錄都以一樣的模式傳輸ui |
-tspa |
保持文件的時間信息 |
-o |
保持文件的屬主信息 |
-p |
保持文件的權限 |
-g |
保持文件的屬組信息 |
-P(大寫) |
顯示同步的過程及傳輸時的進度等信息 |
-D |
保持設備文件信息 |
-I |
保留軟連接 |
-e,--rsh=COMMAND |
使用的信道協議,指定替代rsh的shell程序 |
-n |
測試選項,模擬執行 |
--exclude=PATTERN |
指定排除不須要傳輸的文件模式 |
--exclide-from=FILE |
從文本文件讀取須要排除的文件列表 |
--bwlimit=KBPS |
限制傳輸速度 |
--partial |
斷點續傳 |
--delete |
使目標目錄內容和源保持目錄一致,刪除不一樣的文件 |
實驗環境:
<1>系統環境:
•CentOS7.5
<2>主機環境:
•backup01 IP地址:10.0.0.41 rsync服務端(備份服務端)
•nfs01 IP地址:10.0.0.31 rsync客戶端(用戶數據)
第一步:查看rsync安裝包 rpm -qa rsync 第二步:添加rsync服務的用戶,管理本地目錄 useradd -s /sbin/nologin -M rsync id rsync 第三步:配置rsync的進程模式(vim /etc/rsyncd.conf) uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /backup ignore errors read only = false list = false fake super = yes hosts allow = 172.16.2.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password 第四步:根據rsync.conf的auth_users配置賬戶,遠程鏈接的,並根據secreets file參數生成密碼文件 echo "rsync_backup:wt">>/etc/rsync.password cat /etc/rsync.password 第五步:更改密碼配置文件的權限 chmod 600 /etc/rsync.password ls -l /etc/rsync.password 第六步:建立共享的目錄受權rsync服務管理 mkdir -p /backup chown -R rsync.rsync /backup #提示:若是沒有/backup目錄,就會chdir failed 第七步:啓動rsync服務並檢查 rsync --daemon ps -ef|grep rsync|grep -v grep lsof -i :873 第八步:開機自啓動 echo "/usr/bin/rsync --daemon">>/etc/rc.local tail -1 /etc/rc.local
第一步:生成鏈接服務器須要的密碼文件 echo "wt">>/etc/rsync.password cat /etc/rsync.password 第二步:爲密碼文件配置權限 chmod 600 /etc/rsync.password ls -l /etc/rsync.password
提示:rsync: chgrp "data" (in backup) failed: Operation not permitted (1),出現這個語句是由於rsyncd.conf沒有配置fake super = yes
[root@nfs01 ~]# mkdir /data [root@nfs01 ~]# cd /data/ [root@nfs01 data]# touch aaa [root@nfs01 data]# rsync -avz /data rsync_backup@172.16.2.41::backup/ Password: sending incremental file list rsync: chgrp "data" (in backup) failed: Operation not permitted (1) data/ data/aaa rsync: chgrp "data/.aaa.3HdDEQ" (in backup) failed: Operation not permitted (1) sent 118 bytes received 203 bytes 37.76 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
[root@backup01 ~]# cd /backup/ [root@backup01 backup]# ls data [root@backup01 backup]# cd [root@backup01 ~]# cd /backup [root@backup01 backup]# ls data [root@backup01 backup]# ls data/ aaa
uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /backup ignore errors read only = false list = false fake super = yes hosts allow = 172.16.2.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [wtt] path = /wtt ignore errors read only = false list = false fake super = yes hosts allow = 172.16.2.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_wtt secrets file = /etc/rsync.password.wtt
[root@nfs01 ~]# cd /data/ [root@nfs01 data]# ls aaa ssss [root@nfs01 data]# rm -f * [root@nfs01 data]# rsync -avz rsync_backup@172.16.2.41::backup/ /data/ --password-file=/etc/rsync.password receiving incremental file list ./ aaa ssss sent 69 bytes received 181 bytes 500.00 bytes/sec total size is 0 speedup is 0.00
#同步除名爲eee文件以外的文件 [root@nfs01 data]# ls aaa bbb ccc ddd eee ssss [root@nfs01 data]# rsync -avz --exclude=eee /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/aaa data/bbb data/ccc data/ddd data/ssss sent 338 bytes received 123 bytes 922.00 bytes/sec total size is 0 speedup is 0.00 #查看遠程存儲節點的數據內容 [root@backup01 backup]# ls data [root@backup01 backup]# ls data/ aaa bbb ccc ddd ssss
#同步除名爲ccc和eee文件以外的文件 [root@nfs01 data]# ls aaa bbb ccc ddd eee ssss [root@nfs01 data]# rsync -avz --exclude={ccc,eee} /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/aaa data/bbb data/ddd data/ssss sent 288 bytes received 104 bytes 784.00 bytes/sec total size is 0 speedup is 0.00 #查看遠程存儲節點的數據內容 [root@backup01 backup]# ls data [root@backup01 backup]# ls data/ aaa bbb ddd ssss
[root@nfs01 data]# ls a aaa b bbb c ccc ddd eee ssss [root@nfs01 data]# rsync -avz --exclude={a..c} /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/aaa data/bbb data/ccc data/ddd data/eee data/ssss sent 393 bytes received 142 bytes 356.67 bytes/sec total size is 0 speedup is 0.00
[root@nfs01 data]# cat /tmp/file.txt ssss eee g [root@nfs01 data]# ls a aaa b bbb c ccc ddd eee ssss [root@nfs01 data]# rsync -avz --exclude-from=/tmp/file.txt /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/a data/aaa data/b data/bbb data/c data/ccc data/ddd sent 443 bytes received 161 bytes 402.67 bytes/sec total size is 0 speedup is 0.00
注意:使用—delete選項,即本地有啥,遠程存儲節點就業啥,若是遠程存儲節點有別的數據。那麼這些「別的數據」將所有被刪除掉,全部慎用這個--delete選項。
#遠端存儲節點的數據以下 [root@backup01 backup]# ls data [root@backup01 backup]# ls data/ a aaa b bbb c ccc ddd #本地數據以下 [root@nfs01 data]# ls a b c d e f g #本地數據推送到遠程存儲服務器 [root@nfs01 data]# rsync -avz --delete /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list deleting data/ddd deleting data/ccc deleting data/bbb deleting data/aaa data/ data/a data/b data/c data/d data/e data/f data/g sent 418 bytes received 209 bytes 1,254.00 bytes/sec total size is 0 speedup is 0.00 #再次查看遠程存儲服務器的備份數據內容發現 {aaa bbb ccc}這三個文件被刪除了 [root@backup01 backup]# ls data [root@backup01 backup]# ls data/ a b c d e f g
#未限速 [root@nfs01 data]# dd if=/dev/zero of=test1 bs=1M count=128 [root@nfs01 data]# rsync -avz /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/test1 sent 130,760 bytes received 47 bytes 23,783.09 bytes/sec total size is 134,217,728 speedup is 1,026.07 #限速 [root@nfs01 data]# rsync -avz --bwlimit=10k /data rsync_backup@172.16.2.41::backup/ --password-file=/etc/rsync.password sending incremental file list data/ data/test1 sent 130,760 bytes received 47 bytes 9,689.41 bytes/sec total size is 134,217,728 speedup is 1,026.07