cp只能對本地文件的複製bash
wget是對遠程文件進行復制服務器
remote sync:ssh
能夠鏡像保存整個目錄樹和文件系統socket
能夠增量同步數據工具
能夠保留原文件的權限、時間等屬性ui
加密傳輸數據加密
可使用rcp\ssh等方式傳輸文件(也可直接經過socket傳輸)spa
支持匿名傳輸code
用於替代rcp的一個工具,rsync能夠經過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時rsync server會開一個873端口,等待客戶端去鏈接,鏈接時,rsync server會檢查口令是否相符,若經過口令查覈,則能夠經過進行文件傳輸,第一次連通完成時,會把整份文件傳輸一次,之後則就只需進行增量備份;server
一、本地模式
複製包括license目錄
rsync -av license /tmp
複製包括license目錄下內容
rsync -av license/ /tmp
二、遠程模式(使用ssh執行底層鏈接和加密傳輸)
本地複製到遠程test目錄下
rsync -av license 192.168.1.2:test
三、查詢模式(與ls命令實現的功能相似)
查看本地文件
rsync -a 192.168.1.2:test
四、服務器模式(日常說的rsync服務器就是這種,屬於C/S模式)
rsync在後臺啓動一個守護進程,這個守護進程在服務端永久運行,用於接收文件傳輸請求。客戶端能夠把文件傳輸給守護進程,也能夠向守護進程請求文件。
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
歸檔模式,以遞歸方式傳輸文件,並保持全部文件的屬性
-v, --verbose increase verbosity
輸出詳細信息模式
服務端配置
#默認沒有rsyncd.conf文件,須要手動建立
/etc/rsyncd.conf配置內容:
uid=nobody gid=nobody use chroot=no max connections=20 strict modes=yes pid file=/var/run/rsyncd.pid lock file=/var/run/rsync.lock log file=/letv/rsync/log/rsyncd.log [log_8281] path=/data/log/report8281 comment=8281 log file ignore errors read only=no hosts allow=10.110.144.177 10.110.144.178 hosts deny=* list=false uid=root gid=root auth users=backup secrets file=/etc/backupserver.pass [log_8282] path=/data/log/report8282 comment=8282 log file ignore errors read only=no hosts allow=10.110.144.177 10.110.144.178 hosts deny=* list=false uid=root gid=root auth users=backup secrets file=/etc/backupserver.pass
backupserver.pass爲密碼文件,內容:backup:password(注意:chmod 600 backupserver.pass)
注:backupserver.pass中backup爲用戶名,和rsyncd.conf中的auth users保持一致
啓動rsync服務端(守護進程):
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf #指定配置文件,能夠不指定 --prot=873 #指定監聽端口,能夠不指定;若是指定不爲873,客戶端鏈接時須要帶上參數--port=指定端口號
若是要開機啓動rsync,把/usr/local/rsync –daemon加入文件/etc/rc.local
客戶端配置
建立backupserver.pass文件,內容爲服務端配置訪問帳戶的密碼
cat backupserver.pass password
從服務端拉取文件:
rsync -a backup@10.127.92.181::log_8281/sdk-report-2017-12-21.log.gz /data/ --password-file=/etc/backupserver.pass
同步目錄:
rsync -a backup@10.127.92.181::log_8282 /data --password-file=/etc/backupserver.pass
上傳文件:
rsync -a /data/sdk-report-2017-12-21.log.gz backup@10.127.92.181::log_8281 --password-file=/etc/backupserver.pass
注:
backup爲服務器端rsyncd.conf中配置的訪問帳戶;
ip爲服務端服務器ip;
log_8281爲rsyncd.conf中配置的受權id;
log_8281能夠跟目錄;
同步log腳本:
#!/bin/bash myTime=$1 if [ -z $myTime ];then myTime=`date +'%Y-%m-%d' -d "-1 day"` fi #獲取IP ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` #上傳文件並重命名文件,加上ip後綴。${ip##*.}爲獲取ip最後一個.以後的數字 #這麼作是爲了集羣部署上傳的log名稱不會衝突 rsync -a /logs/mstore.log.$myTime backup@10.127.92.181::log_8281/log/mstore_${ip##*.}.log.$myTime --password-file=/etc/backupserver.pass --port=8088