linux營運、架構之路-rsync,linux-rsync
1 、rsync介紹
rsync是實現全量及增量的本地或遠端資料鏡像同步備份的工具
rsync常用命令參數
命令參數 參數說明-a (--archive) 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於rtopgDl-v (--verbose) 顯示輸出過程,傳輸時的進度等資訊-z (--compress) 傳輸時進行壓縮以提高傳輸效率--exclude=/etc/hosts 指定排除不需要傳輸的檔案資訊(和tar參數一樣)--exclude-from=file 檔案名稱所在的目錄檔案,可以實現排除多個檔案(和 tar參數一樣)--bwlimit=PATE limit I/O bandwidth;KBytes per second limit socket I/O bandwidth限速功能--delete 讓目標目錄和來源目錄資料一致,無差異同步資料
2、rsync特性
①支援拷貝特殊檔案如軟連結,裝置等
②排除指定檔案或目錄同步的功能,相當於打包命令tar排除功能
③ 保持原檔案或目錄的許可權、時間、永久連結、屬主、組等屬性不改變
④實現增量同步處理,只同步發生變化的資料,傳輸效率高
⑤可以使用rcp,rsh,ssh等方式來配合傳輸檔案
⑥可以通過socket(進程方式)傳輸檔案和資料
⑦支援匿名的認證進程模式傳輸,實現方便安全資料備份
3、rsync應用工作情境
①利用定時任務+rsync實現定時同步資料,主要同步的資料資訊是網站內部人員使用的
②利用即時同步軟體+rsync實現即時同步資料,主要同步的資料資訊是網站使用者上傳的資料資訊
4、rsync資料轉送方式
①主機本地之間的資料轉送(此時類似於cp命令的功能)
② 藉助rcp,ssh等通道來傳輸資料(此時類似於scp命令的功能)
③以守護進程(socket)的方式傳輸資料(這個是rsync自身的重要的功能),重點掌握
5、rsync守護進程——服務端配置
1、查看系統是否安裝rsync軟體
rpm -qa rsyncrsync-3.0.6-12.el6.x86_64
2、rsync多模組主設定檔
cat >/etc/rsyncd.conf<<EOF#rsync server##created by yanxinjiang 2017-8-1##rsyncd.conf start##uid = rsyncgid = rsyncuse chroot = nomax connections = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.logignore errorsread only = falselist = falsehosts allow = 172.16.1.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets file = /etc/rsync.password[backup]path = /backup[nfsbackup]path = /nfsbackupEOF
3、建立備份目錄及授權系統管理使用者
mkdir /backup -pchown -R rsync.rsync /backup/useradd rsync -s /sbin/nologin -M
4、建立rsync服務端與用戶端身份認證檔案
echo "rsync_backup:123456" >/etc/rsync.passwordchmod 600 /etc/rsync.password
5、啟動rsync服務
[root@backup ~]# rsync --daemon[root@backup ~]# lsof -i:873COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMErsync 31209 root 3u IPv4 7505812 0t0 TCP *:rsync (LISTEN)rsync 31209 root 5u IPv6 7505813 0t0 TCP *:rsync (LISTEN)
6、rsync
守護進程——用戶端配置
1、建立用戶端身份認證檔案並授權
[root@nfs01 ~]# echo "123456" >/etc/rsync.password[root@nfs01 ~]# chmod 600 /etc/rsync.password
2、用戶端測試rsync服務
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwordsending incremental file listsent 26 bytes received 8 bytes 3.24 bytes/sectotal size is 314 speedup is 9.24
3、rsync無差異資料同步
用戶端推送
[root@nfs01 data]# ls /data/a b c d e f g pull.txt[root@nfs01 data]# rsync -avz /data --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwordsending incremental file listdata/data/adata/bdata/c
服務端檢查
[root@backup backup]# ls /backup/data/
a b c d e f g pull.txt
3、用戶端推送遇到的問題
錯誤1[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupPassword: @ERROR: auth failed on module backuprsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]錯誤2[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backupERROR: The remote path must start with a module name not a /rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]錯誤3[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup@ERROR: Unknown module 'backup'rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]錯誤4[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupPassword: sending incremental file listhostsrsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)
4、錯誤總結
①密碼輸入錯誤,虛擬使用者名稱錯誤
②secrets file = /etc/rsync.password指定的密碼檔案和實際密碼檔案名稱不一致
③/etc/rsync.password檔案許可權不是600
④rsync_backup:123456密碼設定檔後面注意不要有空格
⑤rsync用戶端密碼檔案中只輸入密碼資訊即可,不要輸入虛擬認證使用者名稱稱
⑥推送時雙冒號後面為模組名backup,而不是路徑/backup
⑦telnet串連rsync服務ip地址873連接埠,查看服務是否啟動 telnet 172.16.1.41 873
⑧共用目錄的屬主和屬組不正確,不是rsync;共用目錄的許可權不正確,不是755
7、rsync用戶端訪問服務端原理