rsync

Rsync简介

rsync英文称为remote synchronization,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及曾量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。

rsync官方地址:TP
rsync监听端口:873
rsync运行模式:C/S

安装

主机名称 角色
10.0.0.100 rsyc服务端
10.0.0.200 rsyc客户端

服务端

[root@backup ~]# systemctl stop firewalld
[root@backup ~]# systemctl disable firewalld
[root@backup ~]# cat /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted
[root@backup ~]# yum -y install rsync

#配置
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync                      # 运行进程的用户
gid = rsync                      # 运行进程的用户组
port = 873                       # 监听端口
fake super = yes                 # 无需让rsync以root身份运行,允许接收文件的完整属性
use chroot = no                  # 禁锢推送的数据至某个目录, 不允许跳出该目录
max connections = 200            # 最大连接数
timeout = 600                    # 超时时间
ignore errors                    # 忽略错误信息
read only = false                # 对备份数据可读写
list = false                     # 不允许查看模块信息
auth users = rsync_backup        # 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd # 定义rsync服务用户连接认证密码文件路径

[backup]                # 定义模块backup信息
comment = commit        # 模块注释信息
path = /backup          # 定义接收备份数据目录

# 创建rsync账户,不允许登录不创建家目录
[root@backup ~]# useradd -M -s /sbin/nologin rsync
# 创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
#创建虚拟用户密码文件, 授权600安全权限(用于客户端连接时使用的用户) 
[root@backup ~]#   echo "rsync_backup:zls" >/etc/rsync.passwd
[root@backup ~]#   chmod 600 /etc/rsync.passwd
[root@backup ~]#   systemctl start rsyncd
[root@backup ~]#   systemctl status rsyncd
[root@backup ~]#   systemctl enable rsyncd
[root@backup ~]#   netstat -lnpt

客户端 使用

客户端:
# 方式一:适合终端执行指定用户密码文件
[root@nfs01 ~]# yum install rsync -y
[root@nfs01 ~]# echo "zls" > /etc/rsync.pass
[root@nfs01 ~]# chmod 600 /etc/rsync.pass

# 方式二:脚本中使用,强烈推荐方式
[root@nfs01 ~]# export RSYNC_PASSWORD=zls

实战

#实战1  场景-将客户端的 /backup/下的文件推到服务端
# rsync -avz /backup/ rsync_backup@10.0.0.100::backup
sending incremental file list
./
1.txt

#实战2 场景-将客户端的A推到服务端

# rsync -avz ./A  rsync_backup@10.0.0.100::backup
sending incremental file list
A/
A/2.txt

sent 117 bytes  received 47 bytes  328.00 bytes/sec
total size is 0  speedup is 0.00

#服务端查看:
# ls /backup/
1.txt  A

#3 客户端拉去服务端模块backup的文件到本地/opt
# rsync -avz rsync_backup@10.0.0.100::backup /opt
receiving incremental file list
./
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
A/
A/2.txt
sent 176 bytes  received 484 bytes  1,320.00 bytes/sec
total size is 0  speedup is 0.00
[root@10 ~]# ls /opt/
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  A
#4 Rsync实现数据无差异同步
#拉取远端数据:远端与本地保持一致,远端没有本地有会被删除, 造成客户端数据丢失
[root@10 ~]# ls /opt/
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  A
[root@10 ~]# rsync -avz rsync_backup@10.0.0.100::backup^Copt
[root@10 ~]# ls
A  anaconda-ks.cfg
[root@10 ~]# touch /opt/other.txt
[root@10 ~]# ls/op
-bash: ls/op: No such file or directory
[root@10 ~]# ls /opt/
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  A  other.txt
[root@10 ~]# rsync -avz --delete rsync_backup@10.0.0.100::backup /opt
receiving incremental file list
deleting other.txt
./

sent 28 bytes  received 217 bytes  490.00 bytes/sec
total size is 0  speedup is 0.00
#推送数据至远端:本地与远端保持一致, 本地没有远端会被删除, 造成服务器端数据丢失
[root@10 backup]# ls #源端
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  A
[root@10 ~]# rsync -avz --delete /opt/ rsync_backup@10.0.0.100::backup
sending incremental file list
deleting 6.txt
deleting 5.txt
deleting 4.txt
deleting 3.txt
deleting 2.txt
deleting 1.txt
./

sent 105 bytes  received 82 bytes  374.00 bytes/sec
total size is 0  speedup is 0.00
[root@10 backup]# ls  #源端
A

#Rsync的Limit限速
#企业案例: 某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/


1 服务端 未关闭selinux


[root@localhost ~]# rsync -avz /backup/ rsync_backup@10.0.0.100::backup
sending incremental file list
rsync: mkstemp ".1.txt.qqwzlE" (in backup) failed: Permission denied (13)
rsync: failed to read xattr user.rsync.%stat for "." (in backup): Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]
[root@localhost ~]# getenforce
Disabled

posted on 2024-04-30 10:42  小胖子方法  阅读(57)  评论(0)    收藏  举报

导航