Rsync服务

jokerLu 2022-6-9 162 6/9

Rsync服务介绍

1. Rsync服务介绍

1.linux系统下的数据镜像备份工具
2.rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
已支持跨平台,可以在Windows与Linux间进行数据同步。
3.Rsync默认监听端口873
4.全量备份和增量备份
全量备份优缺点: 占用带宽 磁盘IO 占用磁盘空间 数据安全不易丢失
增量备份优缺点: 速度快 占用较少的磁盘IO 节省磁盘空间 数据易丢失(不完整)

2. 参数详解

-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 像对待常规文件一样处理软链接
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链接
--safe-links 忽略指向SRC路径目录树以外的链接
-H, --hard-links 保留硬链接
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run显示哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 即使出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时显示传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息

3. Rsync传输模式

3.1三种传输模式

  • 本地模式

语法结构:(类似cp命令 了解)
rsync -avz 1.txt /tmp/1.txt

案例1.复制oldboy.txt 到/opt目录
[root@backup:~]#touch oldboy.txt
[root@backup:~]#ll
total 0
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
[root@backup:~]#rsync -avz oldboy.txt /opt/
sending incremental file list
oldboy.txt
[root@backup:~]#ll /opt/
total 0
dr-xr-xr-x 5 root root 79 Mar 24 2023 kylin-sm-package
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
什么是增量: 在执行一次rsync的拷贝动作发现oldboy.txt不会在拷贝。
[root@backup:~]#rsync -avz oldboy.txt /opt/
sending incremental file list

sent 48 bytes received 12 bytes 120.00 bytes/sec
total size is 0 speedup is 0.00

  • 远程命令模式

语法结构:
上传文件: 推送 push 网盘上传
rsync -avz 文件 root@172.16.1.7:/root/
下载文件: 拉取 pull 网盘下载
rsync -avz root@172.16.1.7:/etc/hosts ./

rsync: 命令
-avz: 参数
root: 对方服务器用户名称(如果不写默认按照当前登录用户的身份去远程连接)
[root@backup:~]#rsync -avz /etc/passwd 172.16.1.7:/root/
Authorized users only. All activities may be monitored and reported.
root@172.16.1.7's password:
@: 分隔符
172.16.1.7: 主机信息 hosts主机名称 域名
[root@backup:~]#cat /etc/hosts # 做本地域名解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.7 web01

# 使用主机名称作为远端服务器的地址
[root@backup:~]#rsync -avz /etc/hosts web01:/root/
# 使用域名作为远端服务器的地址
[root@backup:~]#rsync -avz /etc/passwd www.linuxst.cn:/tmp/

案例1: 将41服务器上的oldboy.txt传输到172.16.1.7root的家目录
[root@backup:~]#rsync -avz oldboy.txt root@172.16.1.7:/root/
The authenticity of host '172.16.1.7 (172.16.1.7)' can't be established.
ECDSA key fingerprint is SHA256:5IRW4TiNlfS+kmXlEpwVnm+uDGASPC0Vj1ncCswZL2Q.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 输入yes
Warning: Permanently added '172.16.1.7' (ECDSA) to the list of known hosts.

Authorized users only. All activities may be monitored and reported.
root@172.16.1.7's password: #输入7的root的密码
sending incremental file list

  • 远程命令模式小结

1.可以上传文件
rsync -avz file root@172.16.1.7:/root/
2.可以下载文件
rsync -avz root@172.16.1.7:/etc/hosts ./

  • 守护进程模式(CS架构)

1.安装rsync服务 41备份服务器部署
[root@backup:~]#yum -y install rsync

2.配置rsync服务
配置文件: /etc/rsyncd.conf
[root@backup:~]#cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

3.根据配置创建必要的信息
1)创建用户rsync
[root@backup:~]#useradd -M -s /sbin/nologin rsync
[root@backup:~]#id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)

2)配置用户名和密码写入到密码文件中
[root@backup:~]#echo rsync_backup:123456 > /etc/rsync.passwd
[root@backup:~]#cat /etc/rsync.passwd
rsync_backup:123456

修改密码文件权限为600
[root@backup:~]#chmod 600 /etc/rsync.passwd
[root@backup:~]#ll /etc/rsync.passwd
-rw------- 1 root root 20 Jul 31 10:25 /etc/rsync.passwd

3)创建目录
[root@backup:~]#mkdir /backup
[root@backup:~]#ll /backup/
total 0
[root@backup:~]#ll -d /backup
drwxr-xr-x 2 root root 6 Jul 31 10:26 /backup
修改目录的属主属组为rsync用户
[root@backup:~]#chown rsync.rsync /backup/
[root@backup:~]#ll -d /backup/
drwxr-xr-x 2 rsync rsync 6 Jul 31 10:26 /backup/

4.启动rsync服务
[root@backup:~]#systemctl start rsyncd
[root@backup:~]#systemctl enable rsyncd
检查端口是否启动
[root@backup:~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 6318/rsync

5.测试rsync服务
客户端测试:
推送:语法格式 最后两个冒号,后面是模块的名称而不是路径。
rsync -avz rsync_backup@172.16.1.41::backup

[root@web01:~]#rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
sent 140 bytes received 43 bytes 73.20 bytes/sec
total size is 158 speedup is 0.86

下载: 从backup服务器中下载文件
[root@web01:~]#rsync -avz rsync_backup@172.16.1.41::backup/hosts .

4. Rsync其它参数使用案例

1.rsync排除推送的文件 --exclude
[root@backup:~]#touch {1..3}.txt
[root@backup:~]#ll
total 0
-rw-r--r-- 1 root root 0 Jul 31 10:46 1.txt
-rw-r--r-- 1 root root 0 Jul 31 10:46 2.txt
-rw-r--r-- 1 root root 0 Jul 31 10:46 3.txt
drwxr-xr-x 2 root root 50 Jul 31 09:58 oldboy
[root@backup:~]#rsync -avz *.txt --exclude=1.txt root@web01:/root/
Authorized users only. All activities may be monitored and reported.
root@web01's password:
sending incremental file list
2.txt
3.txt

2.排除多个文件使用 ——exclude-from=file
[root@backup:~]#cat /tmp/1.log
1.txt
2.txt
[root@backup:~]#rsync -avz *.txt --exclude-from=/tmp/1.log root@web01:/root/
Authorized users only. All activities may be monitored and reported.
root@web01's password:
sending incremental file list
3.txt

3.使用限速功能传输文件 --bwlimit=1M 默认kb
[root@backup:~]#rsync -avzP --bwlimit=1M 04.mp4 web01:/root/
Authorized users only. All activities may be monitored and reported.
root@web01's password:
sending incremental file list
04.mp4
15,302,656 13% 1.12MB/s 0:01:28

4.--delete 两端数据一致
1)我有啥,你必须和我一样
第一步: 41
[root@backup:~]#mkdir oldboy
[root@backup:~]#touch oldboy{1.txt,hosts,oldboy.txt}
第二步: 41拷贝oldboy目录到web01
[root@backup:~]#rsync -avz oldboy web01:/root/
第三步: 在web01oldboy目录下创建10个文件
[root@web01:~]#touch oldboy/{1..10}.log
[root@web01:~]#ll oldboy/
total 8
-rw-r--r-- 1 root root 0 Jul 31 11:10 10.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 1.log
-rw-r--r-- 1 root root 44 Jul 15 09:57 1.txt
-rw-r--r-- 1 root root 0 Jul 31 11:10 2.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 3.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 4.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 5.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 6.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 7.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 8.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 9.log
-rw-r--r-- 1 root root 158 Jun 23 2020 hosts
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt

最后执行同步的命令: 结果是web01新创建的文件被删除。
[root@backup:~]#rsync -avz --delete oldboy web01:/root/

2)你有啥,我必须和你一样
1,2,3步骤和上面一样
在重新创建10个文件
[root@web01:~]#touch oldboy/{1..10}.log
[root@web01:~]#ll oldboy/
total 8
-rw-r--r-- 1 root root 0 Jul 31 11:18 10.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 1.log
-rw-r--r-- 1 root root 44 Jul 15 09:57 1.txt
-rw-r--r-- 1 root root 0 Jul 31 11:18 2.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 3.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 4.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 5.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 6.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 7.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 8.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 9.log
-rw-r--r-- 1 root root 158 Jun 23 2020 hosts
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt

执行同步命令: 结果41服务器上oldboy多了10个文件和远端服务器一样
[root@backup:~]#rsync -avz --delete web01:/root/oldboy ./

5.使用密码文件传输 --password-file=密码文件
守护进程举例:
1)将密码写入文件中
[root@web01:~]#echo 123456 > /etc/rsync.pass
2)授权600权限
[root@web01:~]#chmod 600 /etc/rsync.pass
[root@web01:~]#ll /etc/rsync.pass
-rw------- 1 root root 7 Jul 31 11:24 /etc/rsync.pass
3)使用指定密码的参数推送
[root@web01:~]#rsync -avz 3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass
sending incremental file list
3.txt

案例.免交互使用密码参数
[root@web01:~]#cat backup.sh
tar zcf /opt/etc.tar.gz /etc
rsync -avz /opt/etc.tar.gz rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass

6.RSYNC_PASSWORD(rsync内置变量,内置变量有赋值,就会先找内置变量,没有的话就需要终端输入密码)
[root@web01:~]#cat backup.sh
export RSYNC_PASSWORD=123456
tar zcf /opt/etc.tar.gz /etc
rsync -avz /opt/etc.tar.gz rsync_backup@172.16.1.41::backup

- THE END -

jokerLu

6月09日17:55

最后修改:2022年6月9日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论