linux文件同步工具rsync

Linux文件同步工具rsync

安裝包
yum install -y rsync
vim

rsync經常使用選項
-a:歸檔模式,表示遞歸方式傳輸文件,並保持全部屬性;通-rlptgoD;
-r:同步目錄時要加上,相似cp時加R;
-v:同步時顯示一些信息,讓咱們知道同步國創;
-l:保留軟連接;
-L:同步軟連接時會把源文件給同步;
-p:保持文件權限屬性;
-o:保持文件的屬主;
-g:保持文件的屬組;
-D:保持設備文件信息;
-t:保持文件的時間屬性;
--delte:刪除DEST中SRC沒有的文件;
--exclude:過濾指定文件,如--exclude 「logs」會把文件log過濾掉,不一樣步;
-P:顯示同步過程,好比速率,比-v更加詳細;
-u:若是DEST中的文件比SRC新,則不一樣步;
-z:測試時壓縮;安全

本地同步備份數據

rsync -av /etc/passwd /tmp/1.txt
例如:將/etc/passwd備份到tmp/1.txt文件中bash

[root@jinkai ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd服務器

sent 1,160 bytes received 35 bytes 2,390.00 bytes/sec
total size is 1,069 speedup is 0.89
[root@jinkai ~]# cat /tmp/1.txt | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologinssh

備份到遠程計算機

備機上也得安裝rsync:yum install -y rsync
rsync -av /etc/passwd root@192.168.111.137:/tmp/backup

將/etc/passwd文件同步備份到192.168.111.137機器的/tmp/backuptcp

[root@jinkai ~]# rsync -av /etc/passwd root@192.168.111.137:/tmp/backup/
root@192.168.111.137's password:
sending incremental file list
passwdide

sent 1,160 bytes received 35 bytes 77.10 bytes/sec
total size is 1,069 speedup is 0.89
[root@jinkai ~]#
[root@jinkai02 backup]# ls
passwd工具

ssh被修改端口狀況下進行遠程備份

rsync -avP -e "ssh -p 22" /root/abc/ root@192.168.111.137:/tmp/test2/
-e 指定服務和端口
測試

[root@jinkai ~]# rsync -av -e "ssh -p 22" /etc/shadow root@192.168.111.137:/tmp/backup/
root@192.168.111.137's password:
sending incremental file list
shadowui

sent 875 bytes received 35 bytes 55.15 bytes/sec
total size is 784 speedup is 0.86
[root@jinkai ~]#

刪除目標目錄中源目錄沒有的文件

rsync -av --delete /tmp/abc/ 192.168.111.137:/tmp/backup
將A機器/tmp/abc 文件夾中的文件備份到B機器/tmp/backup目錄下,並刪除/tmp/backu中不屬於/tmp/abc的文件

[root@jinkai abc]# rsync -av --delete /tmp/abc/ 192.168.111.137:/tmp/backup
root@192.168.111.137's password:
sending incremental file list
deleting shadow
deleting passwd
./
1.txt
2.txt
3.txt
aa.swap
jinkai

sent 327 bytes received 134 bytes 11.11 bytes/sec
total size is 0 speedup is 0.00
[root@jinkai abc]#

過濾指定文件不一樣步

*將A機器/tmp/abc/目錄下的文件除以txt結尾的文件外,其餘文件都同步到B機器的/tmp/backup/下
rsync -av --exclude "
.txt" /tmp/abc/ 192.168.111.137:/tmp/backup**

遠程同步備份,且不刪除目標文件中比源文件新的文件(新舊以mtime時間爲準)

B:[root@jinkai02 backup]# echo rewreqwrewqr > 1.txt
[root@jinkai02 backup]# cat 1.txt
Rewreqwrewqr
A:[root@jinkai01 abc]# rsync -avu /tmp/abc/ 192.168.111.137:/tmp/backup
B:[root@jinkai02 backup]# cat 1.txt
rewreqwrewqr

同步到其餘機器方法

經過ssh的方法

須要輸入密碼(也能夠兩臺機器設置祕鑰,互相保存對方公鑰,就能夠避免輸密碼了)
rsync -avL /tmp/abc/ root@192.168.111.137:/tmp/backup/ 把本機的同步到遠端
或者
rsync -avL root@192.168.188.3:/tmp/backup/ /tmp/abc/ 把遠端同步到本機

經過後臺服務的方法

編輯配置文件
/etc/rsyncd.conf

添加文件內容
port=873 #指定在哪一個端口啓動rsync服務,默認爲873端口;
log file=/var/log/rsync.log #指定日誌文件
pid file=/var/run/rsyncd.pid #指定pid文件,這個文件做用涉及服務啓動和中止等進程管理操做
address=192.168.111.136 #指定啓動rsyncd服務的ip,若是不指定參數,默認在所有ip上啓動;
[test] #[ ]指定模塊名,自定義;
path=/tmp/rsync #指定數據存放路徑
use chroot=true #安全防禦,默認爲true,若是有軟連接文件建議設置爲false;
max connections=4 #指定最大鏈接數,默認爲0,沒有限制;
read only=no #read only=ture|false若是爲true,則不能上傳到該模塊指定目錄
list=true #表示當用戶查詢該服務器上可用模塊時,該模塊是否被列出,設置true則列出,設置爲false則隱藏
uid=root #指定傳輸文件時使用哪一個用戶身份傳輸
gid=root #指定傳輸文件時使用哪一個用戶組身份傳輸
auth users=test #指定傳輸時要使用哪一個用戶名
secrets file=/etc/rsyncd.passwd #指定密碼文件,該參數連同上面的參數若是不指定,則不使用密碼驗證,注意:改密碼文件的權限必定要是600
hosts allow=192.168.111.137 #表示被容許鏈接該模塊的主機,能夠是IP或者網段,若是是多個,中間用空格隔開

注意:
必須建立目錄/tmp/rsync、也就是path=/tmp/rsync
還有同步格式中的auth users後面的test表示爲服務器自定義的模塊名;若是指定使用用戶名,必須建立好密碼文件、文件權限爲600、內容格式爲用戶名:密碼;例如user:user123
使用以前最好關閉firewalld
systemctl stop firewalld
systemctl disable firewalld

啓動服務

rsync --daemon

查看本機開啓的端口
netstat -lnpt

[root@jinkai abc]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.111.136:873 0.0.0.0: LISTEN 10147/rsync
tcp 0 0 0.0.0.0:22 0.0.0.0:
LISTEN 7060/sshd
tcp6 0 0 :::22

建立文件path指定的備份目錄
mkdir /tmp/rsync

建立密碼文件

[root@jinkai rsync]# vim /etc/rsyncd.passwd
[root@jinkai rsync]# cat !$
cat /etc/rsyncd.passwd
test:admin123

[root@jinkai rsync]# chmod 600 /etc/rsyncd.passwd

備份本機文件到服務端

[root@jinkai02 backup]# rsync -av /tmp/backup/ test@192.168.111.136::test/
Password:
sending incremental file list
./
1.txt
2.txt
3.txt
aa.swap
jinkai

sent 381 bytes received 114 bytes 36.67 bytes/sec
total size is 36 speedup is 0.07
[root@jinkai02 backup]#

服務端備份到本機

[root@jinkai02 backup]# rsync -av test@192.168.111.136::test/test.txt /tmp/new.txt
Password:
receiving incremental file list
test.txt

sent 43 bytes received 105 bytes 8.97 bytes/sec
total size is 12 speedup is 0.08

上面兩種都須要輸入密碼,還有兩種能夠實現無密碼登陸
1,在客戶端編輯一個密碼文件

[root@jinkai02 backup]# vim /etc/pass
[root@jinkai02 backup]# cat /etc/pass
admin123 //加入test用戶密碼
[root@jinkai02 backup]# chmod 600 /etc/pass // 給密碼文件權限
在同步時指定密碼文件,就能夠不用輸密碼了
[root@jinkai02 backup]# rsync -av test@192.168.111.136::test/test.txt /tmp/new.txt --password-file=/etc/pass
receiving incremental file list
sent 20 bytes received 46 bytes 6.29 bytes/sec
total size is 12 speedup is 0.18

2,在rsync服務端不指定用戶
修改配置文件rsyncd.conf,刪除關於認證帳戶的配置項(auth user和 secrets file這兩行)
sed -i 's/auth users/#auth users/;s/secrets file/#secrets file/' /etc/rsyncd.conf // 在配置文件裏面給註釋掉,這樣就不會生效了
再到客戶端上進行測試(這裏能夠不用加test,默認就是root了)

[root@jinkai02 backup]# rsync -av test@192.168.111.136::test/test.txt /tmp/new.txt
receiving incremental file list

sent 20 bytes received 46 bytes 6.29 bytes/sec
total size is 12 speedup is 0.18

使用指定端口備份文件

rsync服務器指定端口爲8730,本機不開放8730端口,那麼就須要加上port命令來實現;
(使用rsync命令默認端口爲873端口,一旦服務器指定端口改變,就必須加上port來備份)

rsync -av --port 8730 192.168.111.136::test/test.txt /tmp/new.txt

相關文章
相關標籤/搜索