rsync使用

介绍

rsync是一个可实现全量以及增量的本地或者远程数据同步备份的工具,可以不进行改变原有数据的属性,实现数据备份迁移。可以本地复制,远程复制,或者远程守护进程方式复制,只发送源文件和目标文件之间的差异信息,实现数据的增量同步。首次传输采用全量传输。

rsync特性

  • 支持拷贝普通文件和特殊文件,如链接文件,设备等
  • 支持排除指定文件或目录同步的功能,类似tar打包命令排除功能。
  • 支持保持源文件或目录的所有属性信息不变
  • 支持增量同步,只同步变化数据,效率高
  • 支持rcp,rsh,ssh来配合进行隧道加密传输文件
  • 支持使用通过socket(守护进程方式)传输文件或目录信息
  • 支持用户认证方式传输数据

rsync命令简单应用

命令

-a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于-rtopgDl
-r 对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写的r.
-o 保持文件属性信息
-p 保持文件权限
-g 保持文件属组信息
-P 显示同步的过程及传输时的进度等信息
-D 保持设备文件信息
-l 保持软连接
-avzP 提示:这里的 相当于 -vzrtopgDlP(还多了Dl功能)生产环境常用 
-avz 定时任务就不用输出过程了可以-az

rsync同步目录

rsync -rp /tmp 172.16.1.31:/tmp/

注意:rsync 同步目录 /tmp/目录后有/信息,表示将目录下的数据内容进行同步,没有/则同步目录

rsync实现删除

rsync -r --delete /null/ /tmp/

删除是将一个空目录和一个有数据的目录进行同步,会将有数据目录中的文件进行清空

rsync守护进程模式应用

语法格式:

pull:rsync [OPTION…] [USER@]HOST::SRC… [DEST]

push:rsync [OPTION…] SRC… [USER@]HOST::DEST

  • SRC:本地要推送到远程的文件或目录
  • USER:认证用户
  • HOST:主机
  • DEST:模块名

rsync -avz ./test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

服务端部署

1、编写配置文件

vim /etc/rsyncd.conf

#rsync_config
#created by WQ at 2016
##rsyncd.conf start##

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"
path = /backup

2、创建用户&创建备份目录

useradd rsync -M -s /sbin/nologin
mkdir /backup
chown -R rsync.rsync /backup

3、创建认证文件

echo "rsync_backup:hiwangqi" >> /etc/rsync.password

chmod 600 /etc/rsync.password

4、启动rsync --daemon,默认监听端口号873。

可选参数:

–porst 8730 指定端口

–config=/etc/rsyncd.conf 指定配置文件

客户端部署

创建密码文件

echo "hiwangqi" >> /etc/rsync.password
chmod 600 /etc/rsync.password

测试

rsync -avz ./test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

输出>>
sending incremental file list
test.txt

sent 209 bytes  received 27 bytes  157.33 bytes/sec
total size is 292  speedup is 1.24

其他命令

1、排除指定文件

–exclude=file

# --exclude=file
rsync -avz /root/test/ --exclude=b.txt --exclude=d.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

# --exclude={a.txt,b.txt}
rsync -avz /root/test/ --exclude={a.txt,b.txt} rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# --exclude-from=test.txt
rsync -avz /root/test/ --exclude-from=test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

2、无差异同步,目录文件保持一致,也可用作清空

–delete

rsync -avz /root/test --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

3、列出目录

# 服务端配置文件需设置list=true
rsync rsync_backup@172.16.1.41::
>>输出
backup 	"backup dir"

配置文件参数

use chroot=no #进行数据同步时,安全相关参数,默认内网同步,可以关闭。

max connections=200 #定时向备份服务器进行数据存储的并发连接数。

timeout = 300 #超过指定时间没有数据传输就释放链接。

pid file 程序运行时,将pid保存到文件

lock file 定义锁文件,主要配合max connections 参数,达到最大连接就禁止访问

[backup] 指定备份目录的模块信息

path = /backup 指定数据进行备份的目录信息

ignore errors 数据备份传输过程中,忽略一些I/O产生的传输错误

read only = false 讲只读模式进行关闭,也就是可以读写

list = false 服务配置模块的信息是否对客户端可见

hosts allow = 172.16.1.0/24 白名单

hosts deny = 0.0.0.0/32 黑名单

auth user = resync_backup 指定认证用户。

secrets file = /etc/rsync.password 认证用户的密码文件信息。