注意(有軟鏈接的rsync同步,-L能夠把軟連接裏的當普通文件同步。-l 只同步軟連接不一樣步軟連接指向的目錄或文件) git
rsync命令詳解vim
rsync
-a 歸檔模式 ,表示以遞歸方式傳輸文件,並保持全部屬性,等同於-rlptgoD,-a選項後面能夠跟一個--no-OPTION這個表示關閉-rlptgdoD中的某一個例如-a --no-l等同於-rptgoD -r 對於目錄以遞歸模式處理,主要針對目錄,傳輸的是目錄必須加-r -v 打印一些信息出來,好比速率,文件數量等。 -l 保留軟連鏈 -L 向對待常規文件同樣處理軟連接,若是是src(源機)中有軟連接文件,剛加上該選項後會把軟鏈接指向的目標文件拷貝到dst(目標機) -p 保持文件權限 -o 保持文件屬主信息 -g 保持文件屬組信息 -D 保持 設備文件信息 -t 保持 文件時間信息 --delete 刪除那些dst中src沒有的文件 --exclude=PATTERN指定排除不須要傳輸的文件,等號後面跟文件名,能夠是萬用字符模式(如*.txt)
PATTERN路徑是相對弄要同步的路徑如(rsync -avPz --exclude=zabbix /opt/sh 10.8.64.99::backup/tmp/ #排除的是/opt/sh/zabbix) --progress或-P 在同步的過程當中能夠看到同步的過程狀態,好比統計要同步的文件數量,同步的文件傳輸速度等等。。。 --bwlimit=10 (限制傳輸速度) -u 加上這個選項後將會把DST中比SRC還新的文件排除掉,不會覆蓋 -z 壓縮 傳輸的過程當中會壓縮,咱們並不會感知。 文件到了目標機器上咱們看到的是同樣的。 (工做中經常使用的幾個 -a -v --delete --exclude ,請熟記他們)
rsync幾種寫法:安全
rsync同步ssh隧道方式:#後面的目錄是目標地址 例1:rsync -avPz 192.168.183.109:/tmp/1.txt /tmp/ 拉 遠程到本機 例2:rsync -avPz /tmp/1.txt 192.168.183.109:/tmp/ 推 本機到遠程 例3:rsync -avPz -e "ssh -p 10022" /tmp/1.txt 192.168.183.109:/tmp/ 推 本機到遠程 端口不 是22的狀況 rsync同步daemon方式 例4:不須要密碼 學ssh免密碼登錄 rsync -auvPz --bwlimit=10 (限制傳輸速度) net-snmp-5.7.3.tar.gz test@113.204.101.197::test --password-file=/home/hanxiaohui/.rsync.password 例5:查詢rsyncd 可用模塊 (list參數,yes會顯示,no不會顯示) rsync -list --port 873 192.168.186.118::
rsync daemon 配置文件詳解服務器
port=873 這是默認端口,要用其它端口改這個 log file=/var/log/rsync.log 指定日誌文件 pid file=/var/run/rsyncd.pid 指定pid ,啓支中止等進程管理操做 #address=192.168.0.10 指定啓動rsyncd服務的ip,假如你的機器 有多個ip,就能夠指定其中一個啓動rsyncd服務,默認是在所有ip上啓動 [test] 指定模塊名,自定義 path=/root/rsync 數據存放路徑(路徑不存在會報@ERROR: chroot failed) use chroot=true true|false 默認是true,意思是在傳輸文件之前首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全保護,可是缺點是須要以root權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下chroot值爲true,若是你的數據當中有軟鏈接文件的話建議設置成false.(待驗證 ) max connections=4 指定最大的鏈接數,默認是0即沒有限制。 read only=no 若是爲true則不能上傳到該模塊指定的路徑下。 list=true 指定當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定true列出,false隱藏 uid=root gid=root uid/gid指定傳輸文件時,以哪一個用戶/組的身份傳輸 auth users=test 指定 傳輸時要使用的用戶名 secrets file=/etc/rsyncd.passwd 指定密碼文件,該參數連同上面的參數若是不指定則不使用密碼驗證,注意該密碼文件的權限必定要是600(相對於rsync的啓動用戶) hosts allow=192.168.183.109 192.168.55.0/24 指定被容許鏈接該模塊的主機,能夠是Ip或者網段,若是是多個之間用空格隔開。 配置文件會爲兩部分:全局,模塊 能夠有多個模塊 全局:port,log file, pid file, address 其實模塊中的一些參數例如use chroot,max connetcions,uid,gid,auth users, secrets file,hosts allow均可以配置成全局的。
rsync daemon啓動ssh
rsync --daemon --config=/etc/rsyncd.conf
rsync daemon例子1(無密碼)ui
[root@host1 111]# cat /etc/rsyncd.conf #port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid uid=root gid=root [test] path=/root/test use chroot=no max connections=50 read only=no list=true ignore errors timeout = 600 hosts allow=192.168.55.0/24 啓動 rsync --daemon --config=/etc/rsyncd.conf
客戶端同步
rsync -avPz /tmp/abc 192.168.55.51::test/ #把abc目錄 同步到服務端test模塊下
例2:
uid git = deploy
rsync -avPz --no-o --no-g /data/media/* 47.100.217.13::data/ #這種同步方式,目標文件的用戶和組都是deploy
rsync daemon例子1(有密碼)spa
#port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid uid=root gid=root #address=192.168.0.10 [test] path=/root/rsync # use chroot=true max connections=50 read only=no list=true ignore errors timeout = 600 auth users=test secrets file=/etc/rsyncd.passwd hosts allow=192.168.183.0/24 2.編輯secrets file,保存後要賦予600權限,若是權限不對,不能完成同步(相對於啓動rsync的用戶) cat /etc/rsyncd.passwd test:test123 chmod 600/etc/rsyncd.passwd 更改權限 啓動rsync rsync --daemon --config=/etc/rsyncd.conf 啓動服務 啓動後能夠查看一下日誌文件,並查看端口是否啓動 cat /var/log/rsync.log netstat -lnp | grep 873 若是 想開機啓動,請把命令 #rsync --daemon --config=/etc/rsyncd.conf 寫入到 /etc/rc.d/rc.local文件中rsyncd.conf修改配置文件 不須要重啓服務 例1: rsync -avLpz test@192.168.183.118::test/test/ ./test1/ 拉 遠程到本機 例 2: rsync -avL ./test2/ test@192.168.183.118::test/test/ 推 本機到遠程 例3: 自定義端口 rsync -avL --port 8730 ./test2/ test@192.168.183.118::test/test/ 推 本機到遠程 例4: 免輸密碼 1.vim /etc/pass 加入test的密碼 test123 2.修改密碼的權限 chmod 600 /etc/pass 3.在 同步的時候指定一下密碼文件 rsync -avL ./test2/ test@192.168.183.118::test/test/ --password-file=/etc/pass #這個密碼文件必須跟執行人是同一個全部者