注意(有軟連接的rsync同步,-L可以把軟鏈接里的當普通文件同步。-l 只同步軟鏈接不同步軟鏈接指向的目錄或文件)
rsync命令詳解
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啟動
rsync --daemon --config=/etc/rsyncd.conf
rsync daemon例子1(無密碼)
[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(有密碼)
#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 #這個密碼文件必須跟執行人是同一個所有者