一、rsync数据同步方式
SYNOPSIS
(1)本地数据同步方式
Local: rsync [OPTION...] SRC... [DEST]
(2)远程数据同步方式
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
(3)守护进程方式同步数据
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
1、本地数据同步方式(类似于cp)
Local: rsync [OPTION...] SRC... [DEST]
实例:将/etc/hosts文件复制到/tmp下
[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
2、远程数据同步方式(类似于scp)---又称为隧道传输
Access
via remote shell:
Pull: rsync [OPTION...]
[USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC...
[USER@]HOST:DEST
说明:需要进行交互传输数据。如果想实现免交互传输数据,需要借助ssh+key方式实现
实例一:【实践操作】pull拉(将远程服务器上的文件拉取到本地)
从远端拉文件到当前目录
[root@nfs01 ~]# touch /tmp/1.txt
[root@backup ~]# rsync nfs01:/tmp/1.txt .
root@nfs01's password:
[root@backup ~]# ll
total 44
-rw-r--r-- 1 root root 0 Oct 11 16:16 1.txt
实例二:【实践操作】push推(将本地文件传输到远程服务器上)
将本地的hosts文件推到远端服务器上
[root@backup
tmp]# ll
total 4
-rw-r--r-- 1 root root 357 Oct 11 15:12 hosts
(1)使用push的格式 推整个目录(包括目录)
[root@backup
tmp]# rsync -r /tmp nfs01:/tmp/
root@nfs01's password:
[root@nfs01 tmp]# ll
total 4
drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp
(2)推整个目录下的文件(不包括目录本身)
[root@backup
tmp]# rsync -r /tmp/ nfs01:/tmp/
root@nfs01's password:
[root@nfs01 tmp]# ll
total 8
-rw-r--r-- 1 root root 357 Oct 11 16:21
hosts
drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp
说明:
/tmp --表示将tmp目录本身及目录下的内容进行传输
/tmp/ --表示只传输tmp目录下面的内容信息
3、守护进程方式同步数据
[root@localhost
~]# uname -a
Linux 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64
x86_64 GNU/Linux
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
(1)配置rsync守护进程方式(需要有服务端与客户端)
说明:
01、backup服务器作为rsync的服务端
02、以rsync客户端作为参照物,将数据推到rsync服务器上
(2)配置rsync服务端(将服务端配置到backup服务器上)
01、软件是否存在,不存在请yum安装即可
[root@backup
~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
02、进行软件服务配置
[root@backup
~]# 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
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
[backup]
comment = "backup dir by clsn"
path = /backup
03、创建rsync用户
[root@backup
~]# id rsync
id: rsync: No such user
[root@backup ~]# useradd -s /sbin/nologin -M rsync
04、创建数据备份存储目录,目录修改属主
[root@backup
~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
05、创建认证用户密码文件
[root@backup
~]#echo "rsync_backup:clsn123"
>>/etc/rsync.password
[root@backup ~]#chmod 600 /etc/rsync.password
06、启动rsync服务
[root@backup ~]#rsync --daemon
07、至此服务端配置完成
[root@backup
~]# ps -ef |grep rsync
root 2076 1
0 17:05 ? 00:00:00 rsync
--daemon
root 2163 1817
0 17:38 pts/1 00:00:00 grep
--color=auto rsync
[root@backup ~]# netstat -lntup |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2076/rsync
tcp 0 0 :::873 :::* LISTEN 2076/rsync
(3)配置rsync客户端(其他服务器为客户端)
01、软件是否存在
[root@nfs01
~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
02、创建认证用户密码文件
客户端的认证文件只需要有密码即可
[root@nfs01 ~]# echo
"clsn123" >>/etc/rsync.password
[root@nfs01 ~]# chmod 600
/etc/rsync.password
03、实现数据传输
001、交互式
[root@nfs01
~]# rsync -avzP /etc/hosts
rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
357 100% 0.00kB/s
0:00:00 (xfer#1, to-check=0/1)
sent 63 bytes received 33 bytes 9.14 bytes/sec
total size is 357 speedup is 3.72
002、免交互式
[root@nfs01
~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup
--password-file=/etc/rsync.password
sending incremental file list
hosts
357 100% 0.00kB/s
0:00:00 (xfer#1, to-check=0/1)
sent 199 bytes received 27 bytes 150.67 bytes/sec
total size is 357 speedup is 1.58
二、特殊参数实践
三、rsync命令同步参数选项
目录参数 |
参数说明 |
-v ,--verbose |
详细模式输出,传输时的信息 |
-z,--compress |
传输时进行压缩以提高传输效率 --compress-level=NUM 可按级别压缩 局域网可以不用压缩 |
-a,--archive (主要) |
归档模式,表示以递归方式传输文件,并保持文件属性。等于 -rtopgDl |
-r,--recursive 归档于-a |
对子目录以递归模式,即目录下的所有目录都同样传输。小写r |
-t,--times 归档于-a |
保持文件时间信息 |
-o,--owner 归档于-a |
保持文件属主信息 |
-p,--perms 归档于-a |
保持文件权限 |
-g,--group 归档于-a |
保持文件属组信息 |
-P,--progress |
显示同步的过程及传输时的进度等信息(大P) |
-D,--devices 归档于-a |
保持设备文件信息 |
-l,--links 归档于-a |
保留软连接(小写字母l) |
-e,--rsh=COMMAND |
使用的信道协议(remote shell),指定替代rsh的shell程序。 例如 ssh |
--exclude=PATTERN |
指定排除不需要传输的文件信息 |
--exclude-from=file |
文件名所在目录文件,即可以实现排除多个文件 |
--bwlimit=RATE |
限速功能 |
--delete |
让目标目录SRC和源目录数据DST一致,即无差异数据同步 |
保持同步目录以及文件属性: (1)这里的-avzP相当于 -vzetopdDIP,生产环境常用参数为-avzp (2)在脚本中可以报-vP去掉 (3)--progress可以用-P代替 |
让目标目录SRC和源目录数据DST一致,即无差异数据同步 |
daemon启动扩展参数 |
|
--daemon |
daemon表示以守护进程的方式启动rsync服务。 |
--address |
绑定指定IP地址提供服务。 |
--config=FILE |
更改配置文件路径,而不是默认的/etc/rsyncd.conf |
--port=PORT |
更改其它端口提供服务,而不是缺省的873端口 |