1、在服務端編輯配置文件
- [root@game_intf ~]# more /etc/rsyncd.conf
- port=8730
- log file=/var/log/rsync.log
- pid file=/var/run/rsync.pid
- [abc]
- path=/tmp/123
- use chroot=yes
- max nonections=4
- read only=yes
- list=yes
- uid=root
- gid=root
- auth users=abc
- secrets file=/etc/rs.passwd
復制代碼
說明: 配置文件 /etc/rsyncd.conf ,內容如下: #port=873 #監聽端口默認為873,也可以是別的端口 log file=/var/log/rsync.log #指定日志 pid file=/var/run/rsyncd.pid #指定pid #address=192.168.0.10 #可以定義綁定的ip 以上部分為全局配置部分,以下為模塊內的設置 [abc] #為模塊名,自定義 path=/tmp/123 # 指定該模塊對應在哪個目錄下 use chroot=true #是否限定在該目錄下,默認為true,當有軟連接時,需要改為fasle,如果為true就限定為模塊默認目錄 max connections=4 # 指定最大可以連接的客戶端數 read only=no #是否為只讀,如果是no的話,客服端推送給服務端的時候不成功,這時候要改成yes list=true #是否可以列出模塊名 rsync --port 8730 172.16.37.139:: 如果為yes的話會列出客戶端所有的模塊名字。 uid=root #以哪個用戶的身份來傳輸 gid=root #以哪個組的身份來傳輸 auth users=test #指定驗證用戶名,可以不設置,不設置默認不用密碼,設置的話安全性更高點 secrets file=/etc/rsyncd.passwd #指定密碼文件,如果設定驗證用戶,這一項必須設置,設定密碼權限為400. hosts allow=192.168.0.101 #設置可以允許訪問的主機,可以是網段,多個Ip地址用空格隔開 密碼文件/etc/rsyncd.passwd的內容格式為:username:password 啟動服務的命令是:rsync --daemon 默認去使用/etc/rsyncd.conf這個配置文件,也可以指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf,更改配置文件不用重啟服務,即時生效。
2、在客戶端保存服務端的密碼文件權限為400,以便腳本使用。
- [root@game_app ~]# more /etc/123.pass
- abc123
復制代碼
3、把客戶端的123文件下的內容放到服務端,這是服務端的read-only 要改成no,否則上傳不成功。
- [root@game_app ~]# rsync -avPz --port 8730 123/ --password-file=/etc/123.pass abc@172.16.37.139::abc
- sending incremental file list
- ./
- anaconda-ks.cfg
- 1338 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1/3)
- install.log
- 49733 100% 11.86MB/s 0:00:00 (xfer#2, to-check=0/3)
- sent 12379 bytes received 49 bytes 24856.00 bytes/sec
- total size is 51071 speedup is 4.11
復制代碼
4、在客戶端查看服務端的模塊名字,無需密碼
- [root@game_app ~]# rsync --port 8730 172.16.37.139::
- abc
復制代碼
5、服務端不需要同步給客戶端的文件,加上--exclude=filename
- [root@game_intf 123]# rsync -avzP --exclude=install.log --exclude=2 /tmp/123/ itv@172.16.37.140:/home/itv/123
- itv@172.16.37.140's password:
- sending incremental file list
- ./
- 3231231
- 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=3/5)
- anaconda-ks.cfg
- 1338 100% 0.00kB/s 0:00:00 (xfer#2, to-check=2/5)
- as
- 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=1/5)
- ppppppp/
- sent 1057 bytes received 76 bytes 151.07 bytes/sec
- total size is 1338 speedup is 1.18
復制代碼
6、rsync 參數選項詳解。
- -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
- -r, --recursive 對子目錄以遞歸模式處理
- -l, --links 保留軟鏈結
- -p, --perms 保持文件權限
- -t, --times 保持文件時間信息
- -o, --owner 保持文件屬主信息
- -g, --group 保持文件屬組信息
- -D, --devices 保持設備文件信息
- --delete 刪除那些DST中SRC沒有的文件 。 會把目的文件中沒有的文件刪掉
- --delete-excluded 同樣刪除接收端那些被該選項指定排除的文件
- --delete-after 傳輸結束以后再刪除
- --exclude=PATTERN 指定排除不需要傳輸的文件模式
- -P 等同於 --partial --progress 顯示備份過程
- -u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件,不覆蓋更新的文件
復制代碼
7、 a、如果對端機器走的不是默認22端口的話,同步時候要加上 -e "ssh -p port"
- [root@game_intf 123]# rsync -avzP -s "ssh -p 22" /tmp/123/ itv@172.16.37.140:/home/itv/123
復制代碼
b、如果是創建秘鑰對,機器互相信任,需要加上 "--rsh=ssh -p port” rsync -av "--rsh=ssh -p port” /dir1/ 192.168.0.101:/tmp/dir2/ |