rsync的三種工作模式:
1、單個主機本地進行數據傳輸 類似與cp命令 另外rsync還有刪除功能
2、借助與rcp,ssh通道來進行傳輸 類似與scp功能
rsync -avz /etc/hosts -e ssh 192.168.12.246:/etc/init.d/
-a:保持文件自身屬性 -z:壓縮傳輸 -e:使用通信協議 -v:輸出給出進度提示
將 本地的/etc/hosts文件 借助ssh通道來傳輸到192.168.12.246的/etc/init.d/目錄下
3、以守護進程(socket)方式進行傳輸
當以守護進程的方式傳輸,需要新建該文件:vim /etc/rsyncd.conf
uid = rsync 用戶
gid = rsync 組
use chroot = no
max connections = 200 連接數
timeout = 300 超時退出
pid file = /var/run/rsyncd.pid 日志
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[lzk]
path = /usr/local/tools/ 同步的目錄
ignore errors 忽略輸出時錯誤提示
read only = false 讀寫
list = false
hosts allow = 192.168.12.0/24 允許的網段
hosts deny = 0.0.0.0/32
auth users = slave 認證的用戶
secrets file = /etc/rsync.password 將客戶端用戶的密碼寫入該文件,不會在要求密碼
當創建寫好配置文件時使用rsync --daemon啟動服務 查看873端口
[root@node1 ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
rsync 17160 root 4u IPv6 175668 TCP *:rsync (LISTEN)
rsync 17160 root 5u IPv4 175669 TCP *:rsync (LISTEN)
在配置文件中我們定義的用戶是rsync,所以我們現在創建虛擬用戶
useradd rsync -s /sbin/nologin
將我們共享的文件目錄賦予用戶權限
chown rsync.rsync /usr/local/tools/
在配置文件中定義了密碼文件,我們將認證用戶和密碼寫入該文件中
echo "slave:lzk.1995" > /etc/rsync.password
由於該文件是有我們認證的信息,所以要給最小的權限最安全 chmod 600 /etc/rsync.password
這時,我們的客戶端就配置好了。
我們在客戶端也需要創建rsync.password文件,當同步數據時,可以不顯示密碼提示
echo "lzk.1995" > /etc/rsync.password
給該文件賦予最小最安全的權限
chmod 600 /etc/rsync.password
配置到此,我們便可以通過客戶端像服務器端推拉數據了
[root@node2 /]# rsync -avz slave@192.168.12.237::lzk /usr/local/tls/
Password:
可以看出現在還是需要密碼,我們添加格外參數
[root@node2 /]# rsync -avz slave@192.168.12.237::lzk /usr/local/tls/ --password-file=/etc/rsync.password
receiving file list ... done
./
memeda
sent 125 bytes received 870686 bytes 1741622.00 bytes/sec
total size is 789158893 speedup is 906.23
注意:sync -avz slave@192.168.12.237::lzk /usr/local/tls/ --password-file=/etc/rsync.password
上面標紅的字母在ip后面是兩個冒號,scp則是一個。另外lzk和服務器端配置文件中[lzk]是對應的。