Pull ——拉取
Push ——推送
1 本地模式
Local: rsync [OPTION…] SRC… [DEST]
例子1:普通拷贝
[root@backup ~]# rsync /etc/hosts /mnt/
[root@backup ~]# ll /mnt/
total 4
-rw-r—r— 1 root root 215 Sep 12 19:49 hosts
例子2:保持属性
[root@backup ~]# rsync -vzrtopg /etc/hosts /mnt/
sending incremental file list
hosts
sent 168 bytes received 31 bytes 398.00 bytes/sec
total size is 215 speedup is 1.08
例子3:删除拷贝
[root@backup ~]# ls /mnt/
hosts
[root@backup ~]# mkdir /test
[root@backup ~]# rsync -avz --delete /test/ /mnt/
sending incremental file list
./
deleting hosts
sent 29 bytes received 15 bytes 88.00 bytes/sec
total size is 0 speedup is 0.00
[root@backup ~]# ls /mnt/
[root@backup ~]#
小结:
删除拷贝,源目录有什么,目标目录也必须有什么,如果源目录没有,目标目录有,就会把目标目录的文件删除。
2. 远程shell模式
Access via remote shell:
Pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
Push: rsync [OPTION…] SRC… [USER@]HOST:DEST
例1:
[root@backup ~]# rsync -avz /etc/hosts -e "ssh" oldboy@172.16.1.31:~/
oldboy@172.16.1.31’s password:
sending incremental file list
hosts
sent 168 bytes received 31 bytes 56.86 bytes/sec
total size is 215 speedup is 1.08
[root@nfs01 ~]# hostname -I
<= 到172.16.1.31服务器查看oldboy的家目录是否有文件
172.16.1.31
[root@nfs01 ~]# ls /home/oldboy/
hosts
3. 远程daemon模式
此模式很重要,通过建立daemo进程来工作,分客户端和服务器端
Access via rsync daemon:
Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST
3.1 服务器端配置:
1、创建配置文件rsyncd.conf并保存到/etc/目录下
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
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32 <=这个地方二选一
auth users = rsync_backup
secrets file = /etc/rsync.password
2、添加rsync用户
[root@backup etc]# useradd rsync -s /sbin/nologin -M
[root@backup etc]# tail -1 /etc/passwd
rsync:x:501:501::/home/rsync:/sbin/nologin
3、创建backup目录,并修改授权信息为rsync
[root@backup etc]# mkdir /backup
[root@backup etc]# chown rsync.rsync /backup
[root@backup etc]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 4096 Sep 12 22:57 /backup/
4、创建 rsync.password信息及文件权限修改
[root@backup ~]# echo “rsync_backup:oldboy” >>/etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:oldboy <=用户名:密码
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw———- 1 root root 20 Sep 12 23:03 /etc/rsync.password
- 启动服务并检查
[root@backup etc]# rsync —daemon
[root@backup ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 24537 root 3u IPv4 30664 0t0 TCP :rsync (LISTEN)
rsync 24537 root 5u IPv6 30665 0t0 TCP :rsync (LISTEN)
- 加入开机自启动
[root@backup ~]# echo “rsync —daemon” >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
rsync —daemon
3.2 客户端配置
- 创建密码文件
[root@nfs01 ~]# echo “oldboy” >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
oldboy
- 创建backup目录(集中备份文件临时存放目录)
[root@nfs01 ~]# mkdir /backup
[root@nfs01 ~]# ll -d /backup/
drwxr-xr-x 2 root root 4096 Sep 13 16:35 /backup/
- 创建测试文件
[root@nfs01 ~]# cd /backup/
[root@nfs01 backup]# touch stu{01..10}.jpg
[root@nfs01 backup]# ls
stu01.jpg stu02.jpg stu03.jpg stu04.jpg stu05.jpg stu06.jpg stu07.jpg stu08.jpg stu09.jpg stu10.jpg
4、推送方法1
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ —password-file=/etc/rsync.password <=推送命令
sending incremental file list
./
stu01.jpg
stu02.jpg
stu03.jpg
stu04.jpg
stu05.jpg
stu06.jpg
stu07.jpg
stu08.jpg
stu09.jpg
stu10.jpg
sent 504 bytes received 201 bytes 470.00 bytes/sec
total size is 0 speedup is 0.00
提示推送成功,进入到backup服务器查看:
- 推送方法2
[root@nfs01 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ —password-file=/etc/rsync.password
sending incremental file list
./
stu01.jpg
stu02.jpg
stu03.jpg
stu04.jpg
stu05.jpg
stu06.jpg
stu07.jpg
stu08.jpg
stu09.jpg
stu10.jpg
sent 504 bytes received 201 bytes 1410.00 bytes/sec
total size is 0 speedup is 0.00
5、服务器端查看:
[root@backup backup]# ll
total 0
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu01.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu02.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu03.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu04.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu05.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu06.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu07.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu08.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu09.jpg
-rw-r—r— 1 rsync rsync 0 Sep 13 16:39 stu10.jpg
客户端拉取数据方法:
[root@nfs01 backup]# rsync -avz rsync_backup@172.16.1.41::backup/ /backup/ —password-file=/etc/rsync.password
receiving incremental file list
./
a
b
c
d
e
f
g
sent 200 bytes received 412 bytes 1224.00 bytes/sec
total size is 0 speedup is 0.00
[root@nfs01 backup]# ll
total 0
-rw-r—r— 1 root root 0 Sep 13 20:41 a
-rw-r—r— 1 root root 0 Sep 13 20:41 b
-rw-r—r— 1 root root 0 Sep 13 20:41 c
-rw-r—r— 1 root root 0 Sep 13 20:41 d
-rw-r—r— 1 root root 0 Sep 13 20:41 e
-rw-r—r— 1 root root 0 Sep 13 20:41 f
-rw-r—r— 1 root root 0 Sep 13 20:41 g
完成配置过程。
小结:
推送:
rsync -avz /tmp/ rsync_backup@10.0.0.8::oldboy –password-file=/etc/rsync.password
rsync -avz /tmp/ rsync://rsync_backup@10.0.0.8/backup/ —password-file=/etc/rsync.password
拉取:
rsync -avz rsynbc_backup@10.0.0.8::oldboy /tmp/ —password-file=/etc/rsync.password
rsync -avz rsync://rsync_backup@10.0.0.8/backup /tmp/ —password-file=/etc/rsync.password
上述的backup 是模块名称,(在服务器端的rsyncd.conf里面定义),不是路径。