rsync数据镜像工具

rsync功能介绍

rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。

rsync有如下特性:

  • 可以镜像保存整个目录树和文件系统

  • 可以增量同步数据,文件传输效率高,因而同步时间很短。

  • 可以保持原有文件的权限、时间等属性。

  • 加密传输数据,保证了数据的安全性。

rsync有两种应用模式

  • client/server模式
  • client/client模式。

rsync官方地址:https://rsync.samba.org/
rsync监听端口:873

安装:yum install -y rsync

rsync使用

-a 归档模式传输,等于-tropgDl -t -r -o -g -D -l

-r 递归复制目录树

-v 详细模式输出,打印速率,文件数量等
rsync -v ./2.txt root@172.16.1.41:/opt/

-z 传输时进行压缩以提高效率
$ rsync -vz ./2.txt root@172.16.1.41:/opt/

-t 保持文件时间信息
rsync -vzrt ./a/b/c/2.txt root@172.16.1.41:/opt/

-o 保持文件属主信息

-g 保持文件属组信息
rsync -vzrtgo ./a/b/c/2.txt root@172.16.1.41:/opt/

-p 保持文件权限
rsync -vzrtgop ./a/b/c/2.txt root@172.16.1.41:/opt/

-l 保留软连接
rsync -vzrtgopl ./* root@172.16.1.41:/opt/

-p 显示同步的过程及传输时的进度等信息
rsync -vzrtgoplP ./* root@172.16.1.41:/opt/

-D 保持设备文件信息
rsync -vzrtgDopl /dev/tty1 root@172.16.1.41:/opt/

-L 把软连接拷贝成文件

-e 使用的信道协议,指定替代rsh的shell程序

--append 指定文件接着上次传输中断处继续传输

--append-verify 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件)

--exclude=PATTERN 指定排除不需要传输的文件
rsync -avzP --append-verify --exclude=2.txt ./* root@172.16.1.41:/opt/

--exclude-from=file 按照文件指定内容排除
rsync -avzP --append-verify --exclude-from=/tmp/exclude.txt ./* root@172.16.1.41:/opt/

--bwlimit=100 限速传输(单位:mb)
rsync -avzP --append-verify --bwlimit=10 ./* root@172.16.1.41:/opt/

--delete 让目标目录和源目录数据保持一致

--password-file=xxx 使用密码文件

--port 指定端口传输

rsync的client/server模式

client/server模式下,是在server端启动一个服务端口,然后客户端来连接这个端口,进行数据的同步和传输。

服务端设置

rsync服务端的配置文件为/etc/rsyncd.conf

该文件需要手动创建

# /etc/rsyncd.conf
uid = nobody    # 用户id
gid = nobody	# 用户组id
use chroot = no	 # 安全相关
port = 873		# 指定端口
max connections = 10 # 最大连接数
pid file = /var/run/rsyncd.pid  # pid文件
lock file = /var/run/rsync.lock # 锁文件
log file = /var/log/rsyncd.log # 日志文件

[abc]    # 模块的名称,在客户端拉取的时候使用
path = /data   # 备份的目标地址
comment = abc file  # 备注
ignore errors # 忽略错误程序
read only = true  # 只读,yes表示只允许下载,no表示可上传可下载
list = false # 设置是否可以被查看到,为false则表示隐藏,为true则表示可被查看
uid = root  # 设置当为守护进程时的id
gid = root  # 组id
auth users = hxg   # 用户
secrets file = /etc/server.pass # 密码文件

其中选项的解释

全局的

  • uid 此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认值是“nobody”。

  • gid 此选项指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为“nobody”。

  • max connections 此选项指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制。

  • pid file 此选项用来指定rsync守护进程对应的PID文件路径。

  • lock file 此选择指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock。

  • log file 此选项指定了rsync的日志输出文件路径。

  • hosts allow 单个IP地址或网络地址,允许访问的客户机地址

模块的

  • [abc] 表示定义一个模块的开始,ixdba就是对应的模块名称。

  • path 此选项用来指定需要备份的文件或目录,必填项,这里指定的目录为/webdata。

  • exclude 用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用―exclude或----filter来指定某些文件或目录不下载或上传(既不可访问)

  • list 此选项设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false。

  • auth users 此选项用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。需要注意的是这里的用户和Linux系统用户没有任何关系。这里指定的用户是backup。

  • secrets file 此选项指定一个包含用户名:密码格式的文件,用户名就是auth users选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。

  • hosts allow 指定哪些IP的客户允许连接该模块。定义可以是以下形式:

    单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开。

    整个网段,例如:192.168.0.0/24,也可以书写为192.168.0.0/255.255.255.0 *则表示所有,默认是允许所有主机连接。

  • hosts deny 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义

  • timeout 通过该选项可以覆盖客户指定的IP超时时间。

    通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一般会定义为600.

只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。

将服务端设置成守护进程模式

有两种方法

利用--daemon直接执行

$ whereis rsync
rsync: /usr/bin/rsync /usr/share/man/man1/rsync.1.gz
$ /usr/bin/rsync --daemon
$ ps -ef|grep rsync
root     20278     1  0 16:29 ?        00:00:00 /usr/local/bin/rsync --daemon

利用systemctl执行

创建密码文件
echo "hxg:123456" > /etc/server.pass
给密码文件授权(必须授权为600)
chomd 600 /etc/server.pass
启动服务

systemctl start rsyncd

客户端

常见拷贝组合

显示拷贝过程的

加了L,将软连接拷贝成文件

rsync -vzrtopgL --delete hxg@10.1.2.3::abc /data --password-file=/etc/server.pass

rsync -avzpPL hxg@10.1.2.3::abc /data --password-file=/etc/server.pass

忽略软连接

rsync -vzrtopg --delete hxg@10.1.2.3::abc /data --password-file=/etc/server.pass 不拷贝软连接 推荐

拷贝软连接

rsync -vzrtopgl --delete hxg@10.1.2.3::abc /data --password-file=/etc/server.pass

rsync -avzpP hxg@10.1.2.3::abc /data --password-file=/etc/server.pass 需要拷贝软连接 推荐

不显示过程 去掉vP就可以了


也可以手动输密码

rsync -avzpP hxg@10.1.2.3::abc /data


或者使用环境变量

添加环境变量
定义环境变量
export RSYNC_PASSWORD=123456

同步
rsync -avzpP /data hxg@10.1.2.3::abc

持续同步数据,只需要写入crontab任务

执行crontab -e 文件在/var/spool/cron/root

写入

*/1 * * * * rsync -azpL --delete hxg@10.1.2.3::abc /data --password-file=/etc/server.pass &> /dev/null

rsync的client/client模式

rsync -arzpPL --delete Python-3.6.5.tgz root@172.16.213.233:/mnt (推送模式)

rsync -arzpPL --delete root@172.16.213.233:/mnt/Python-3.6.5.tgz /app/(拉取模式)

默认情况下rsync走的是ssh协议,22端口,如果ssh是非默认的22端口,那么可以添加“-e“选项:

rsync -azpL --delete --progress -e 'ssh -p 9090' Python-3.6.5.tgz root@172.16.213.233:/mnt (推送模式)

rsync -azpL --delete --progress -e 'ssh -p 9090' root@172.16.213.233:/mnt/Python-3.6.5.tgz /app/(拉取模式)

其中,9090是sshd服务的端口。

posted @ 2022-12-18 02:31  厚礼蝎  阅读(123)  评论(0编辑  收藏  举报