Rsync的原理
rsync是Linux下同步文件的一个高效算法,用于同步更新两处计算机的文件和目录,并适当利用查找文件中不同块以减少数据传输。rsync的主要特点就是增量传输,支队变更的部分进行传送。
Rsync的三种传输模式
1.本地方式
单个主机本地之间的数据传输(此时类似于cp命令)
Local: rsync [OPTION...] SRC... [DEST]
rsync #备份命令(cp)
[options] #选项
SRC... #本地源文件
[DEST] #本地目标文件
#本地拷贝数据示例
[root@backup ~]# rsync -avz /etc/passwd /tmp/2.远程方式
通过ssh通道传输数据,类似scp命令
#pull 拉取数据
1. 语法格式
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Pull #拉取, 下载
rsync #备份命令
[options] #选项
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
SRC... #目标主机源文件
[DEST] #下载至本地哪个位置
2. 示例
● 拉取远程文件
[root@backup ~]# rsync -avz root@172.16.1.41:/etc/hostname ./
● 拉取远程目录下的所有文件
[root@backup ~]# rsync -avz root@172.16.1.41:/root/ /backup/
----------------------------------------------------------------------------------
push推送数据
1. 语法格式
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Push #推送, 上传
rsync #备份命令
[options] #选项
SRC... #本地源文件
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
[DEST] #目标对应位置
2. 示例
rsync -avz /backup/2018-10-01 root@172.16.1.41:/tmp/3.守护进程
pull 拉取数据
1. 语法格式
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync #命令
[OPTION...] #选项
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
SRC... #远程主机模块(不是目录)
[DEST] #将远程主机数据备份至本地什么位置
2. 示例
● 拉取rsync备份服务的"backup模块"数据至本地/mnt目录
[root@nfs01 ~]# rsync -avz rsync_backup@192.172.16.1.41::backup/ /mnt/ --password-file=/etc/rsync.password
-------------------------------------------------------------------------------------------------------------
push 推送数据
1. 语法格式
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync #命令
[OPTION...] #选项
SRC... #远程主机模块(不是目录)
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
[DEST] #将远程主机模块备份至本地什么位置
2. 示例
● 将本地/mnt目录推送至rsync备份服务器的backup模块
[root@nfs01 ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.41::backup/ --password-file=/etc/rsync.passwordRsync备份
增量备份
只备份增加的内容
全量备份
备份所有的内容
Rsync的参数
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件Rsync部署流程
服务端配置
安装rsync服务
yum install -y rsync配置rsync
vim /etc/rsyncd.conf
#运行进程的用户
uid = rsync
#运行进程的用户组
gid = rsync
#监听端口
port = 873
#无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes
#禁锢推送的数据至某个目录,不允许跳出该目录
use chroot = no
#最大连接数
max connections = 200
#超时时间
timeout = 600
#忽略错误信息
ignore errors
#对备份文件可读写
read only = false
#不允许查看模块信息
list = false
#定义虚拟用户,作为连接认证用户
auth users = rsync_backup
#定义rsync服务用户连接认证密码文件路径
secrets file = /etc/rsync.passwd
#日志
log file = /var/log/rsyncd.log
####################################
#定义模块信息
[backup]
#模块注释信息
comment = welcome to oldboyedu backup!
#定义接收备份数据的目录
path = /backup创建一个用来运行rsync服务的用户
useradd -M -s /sbin/nologin rsync创建备份目录,目录路径以及名称与**第2步**中模块信息的**path**一致
mkdir /backup将属主属组修改为**第2步**中运行进程的用户和用户组
chown -R rsync.rsync /backup虚拟用户配置
echo "rsync_backup:zls" > /etc/rsync.passwd
#授予600权限
chmod 600 /etc/rsync.passwd7. 启动服务并设置为开机自启动
systemctl start rsyncd
systemctl enable rsyncd客户端配置
1. 安装rsync服务
yum install -y rsync2. 配置虚拟用户的密码,两种方式
第一种方式 将服务端虚拟用户密码写入到配置文件并给与600权限
echo "zls" > /etc/rsync.pass
chmod 600 /etc/rsync.pass第二种方式 直接export
export RSYNC_PASSWORD=zls
评论区