Rsync
是什么:
- Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
- Rsync软件适用于unix/linux/windows等多种操作系统平台。Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。
- 它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名(类似于md5校验)。减少通过网络数据发送数量,利用只发送源文件和目标文件之间的差异信息,从而实现数据的增量同步复制。
- Rsync具备使本地和远程两台主机之间的数据快速复制,远程备份的功能,Rsync命令本身即可实现异地主机复制数据,功能类似scp又优于scp,scp每次都是全量备份,rsync可以实现增量拷贝(和scp一样都是基于ssh服务传输),Rsync软件还支持配置守护进程,实现异机数据复制。
功能:
- 全量拷贝:全量 第一次将A服务器某个文件夹的全部数据拷贝,第二次也是将A服务的某个文件夹进行拷贝,将数据全部拷贝,不考虑是否已经存在。
- 增量拷贝:增量,第一次从A服务器拷贝一个1.txt,第二次拷贝新增了2.txt,那么拷贝只会将新增的2.txt进行拷贝,1.txt不会拷贝。 每次只拷贝备份服务器没有数据,如果已经存在就不会拷贝。
- 本地复制 效果如 cp,远程同步复制 效果如 scp,本地数据删除 效果如 rm,远程数据查看 效果如 ls。具有远程拷贝与本地拷贝的功能。
特性:
- 支持拷贝 普通文件 特殊文件(link文件,设备文件)。
- 支持排除指定文件,目录的同步功能(同步数据时,指定文件不同步)。
- 能够保持原有的文件属性不变(stat file)。
- 实现增量复制(只复制变化的数据,数据传输效率高)。
- 可以配合ssh rcp rsh 等方式进行隧道加密文件传出(rsync不加密数据)。
- 可以通过socket(进行通信文件)传输文件和数据(c/s架构)拥有服务端。
- 支持匿名用户模式传输。
所在架构:
1.工作模式与默认端口
默认端口:873
工作模式:
1.本地模式,类似cp。
2.远程模式,类似于scp,不同的机器,可以通过网络进行传输(公网或者局域网)。
3.后台模式,提供一个后台服务,实时的进行数据同步,安全性更高。
2.备份模式
有哪些:
- 增量备份。
- 完全备份。
示例图:
2-1.完全备份
解释:
将全部的数据,都拷贝到server端(效率太低,存在重复性的文件)
注意:
1.如果server这台备份服务器文件夹有其他的文件,不会受影响
2.如果使用参数 --delete,就会请其他的文件进行清空后,在进行备份(数据会丢失)
2-2.增量拷贝
解释:
rsync自动检测,只会将新增加的文件,备份到server下,而不会重复备份已存在的数据
# 备份效率高,只会拷贝变化的文件。
3.备份架构模式
3-1.客户端推送
解释:
最基本的远程拷贝模式,客户端将数据远程的发送到服务端。
3-2.客户端下载
解释:
最基本的从客户端中下载数据到本机。
3-3.多服务器备份架构
解释:
多层备份操作,可以保证数据的安全性,相同的数据备份在不同的远程服务端,最终汇总到一台机器上备份。不一定是多个节点,也可以单个节点,需要根据需求而定。
3-4.异地备份架构
解释:
存在多地区的服务器,那么需要保证异地的服务器的数据相同。
4.rsync命令
4-1.安装
1.安装
yum install rsync -y
2.语法类型
1.本地模式 等同于 cp命令
2.远程模式 等同于 scp命令
# 注意:
在使用rsync命令时,不限速的情况下会占用磁盘的io,会影响其他的程序,所以rsync命令在备份时一般会在凌晨执行,不影响其他的程序。也可以使用参数进行限速。
--bwlimit 限制传输io
4-2.参数
参数解释
-v 详细模式输出
-a 归档模式,递归的方式传输文件,并保持文件的属性,等同于 -rlptgoD
-r 递归拷贝目录
-l 保留软链接
-p 保留原有权限
-t 保留原有时间(修改)
-g 保留属组权限
-o 保留属主权限
-D 等于--devices --specials 表示支持b,c,s,p类型的文件
-R 保留相对路径
-H 保留硬链接
-A 保留ACL策略
-e 指定要执行的远程shell命令
-E 保留可执行权限
-X 保留扩展属性信息 a属性
# 常用的组合参数
rsync -avzP
rsync -az # 脚本中使用不显示传输的详细信息
4-3.命令格式
命令 | 解释 |
---|---|
rsync [OPTION]... SRC DEST | 拷贝本地文件,将SRC拷贝到DEST。例如:rsync -a /data /backup |
rsync [OPTION]... SRC [USER@]HOST:DEST | 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。例如:sync -avz *.c foo:src。本地拷贝到远程。 |
rsync [OPTION]... [USER@]HOST:SRC DEST | 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。例如:rsync -avz foo:src/bar /data。远程考本到本地。 |
rsync [OPTION]... [USER@]HOST::SRC DEST | 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack |
rsync [OPTION]... SRC [USER@]HOST::DEST | 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www |
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] | 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www |
远程拷贝时:
1.主机名(需要再配置hosts文件)
rsync <参数> 本机路径 用户@主机名:远程路径 # 本地拷贝到远程
2.ip地址
rsync <参数> 本机路径 用户@IP地址:远程路径 # 本地拷贝到远程
4-4.参数详解
-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 显示帮助信息
4-3.本地模式
# 类似于cp命令,在本机内执行,将文件A拷贝到文件B
命令格式:
rsync <参数> 原文件 目标文件
作用:
从本地A拷贝到本地B
与cp命令的区别:
cp /var/log /opt # 执行几次,就拷贝几次,全部内容。全量拷贝。
rsync -avzP /var/log /opt # 支持增量拷贝,只会拷贝发生变化的,新的文件,已经拷贝的不会在拷贝。可以只拷贝已经变化的。
4-3-1.示例-拷贝文件
1.将 /var/log/messages 文件拷贝到 /opt下
rsync -azvP /var/log/messages /opt # 将文件拷贝到opt下
2.拷贝大文件,并且限速使用--bwlimit参数
1.创建一个大文件 500M
dd if=/dev/zero of=/data/test.log bs=10M count=500
2.拷贝
rsync -azvP --bwlimit=10M /data/test.log /opt
4-3-2.示例-拷贝目录
1.将/var/log目录拷贝到 /opt目录中
rsync -azvP /var/log /opt
# 注意,在拷贝目录时的 / 的问题
# 拷贝整个目录 不加 / , 拷贝整个目录中得内容 加 /。
rsync -azvP /var/log /opt # 将整个log目录进行拷贝
rsync -azvP /var/log/ /opt # 拷贝目录下的内容
2.目录的增量拷贝
1.创建一个内容
touch /data/{1..10}.txt
2.现将拷贝到 opt 目录下
rsync -azvP /data/ /opt
3.在data文件的1.txt写入数据
echo '1231' > /data/1.txt
4.在进行拷贝
rsync -azvP /data/ /opt
4-3-3.无差别拷贝
无差别拷贝:
就是将被拷贝的目录情况,在重新将数据拷贝一遍,与cp命令效果相同。
例如:
A文件 拷贝到 B文件,如果B文件存在内容,不是用参数--delete,那么就会保留B文件的内容。
使用的情况下,就会清空B文件,然后在进行拷贝。
使用参数:
--delete
例如:
1.不使用参数
rsync -azvP /data/ /opt
2.使用参数
rsync -azvP --delete /data/ /opt
4-4.远程模式
# 类似与 scp一样,可以远程的拷贝文件到本地,也可以将本地文件发送到远程
命令格式:
默认走的是ssh协议 与 scp 命令类似
1.语法:将文件上传到其他机器
rsync 参数 本机源路径 user@ip:目标机源路径
2.语法:将文件下载到本机
rsync 参数 user@ip:目标机源路径 本机源路径
# 注意:
无论是下载还是上传目录,都需要注意 / 如果带/就是文件夹的内容,如果不带就是文件夹本身
4-4-1.上传模式
# 主动将数据上传到其他机器中
1.将 123.log 文件上传到 192.168.85.143
rsync -azvP /opt/123.log root@192.168.85.143:/opt
2.将本机的data文件上传到 192.168.85.143
rsync -azvP /data root@192.168.85.143:/opt # 要内容的情况下还要文件夹
3.将本机的 data内的内容 上传到 192.168.85.143
rsync -azvP /data/ root@192.168.85.143:/opt # 只要内容不要外部的文件夹
# 注意:可以适当的添加参数
--bwlimit=20 # 限速参数
--dalete # 无差异上传参数,会先清空远程的内容,在上传
4-4-2.下载模式
# 将远程的机器的文件数据下载到本机
1. 192.168.85.143 机器的 /etc/passwd 文件下载到本机的 /opt 下
rsync -azvP root@192.168.85.143:/etc/passwd /opt
2.192.168.85.143 机器的 /var/log/nginx 文件夹下载到本机 /opt 下
rsync -azvP root@192.168.85.143:/var/log/nginx /opt # 要内容的情况下还要文件夹
3.192.168.85.143 机器的 /var/log/nginx 文件内容下载到本机 /opt 下
rsync -azvP root@192.168.85.143:/var/log/nginx/ /opt # 只要内容不要外部的文件夹
4-5.密码问题
注意:
rsync基于ssh协议传输,因此需要认证方式、要么密码、要么密钥。
# 第一次进行远程传输数据或者下载数据时,会进行指纹验证。
1.两条机器的远程传输,默认走的就是ssh协议。
2.两条机器没有做免密登录,所有需要数据对方的服务器的密码(在正式的生产环境下,是不被允许的,不安全)。如果不想数据密码,可以使用免密登录。
4-6.文件排除操作
# 使用参数:--exclude=PATTERN 指定排除不需要传输的文件模式,可以通配符写法
1.排除 .png 文件
rsync -azvP --exclude=*.png /opt/ root@192.168.85.143:/opt # 排除 *.png结尾的文件
2.排除隐藏文件 和 某个文件夹
rsync -avzP --exclude=test --exclude=.* /opt/ root@192.168.85.143:/opt # 排除隐藏文件 .* 与 test文件夹
4-7.指定端口补充
使用ssh协议,可能端口不是默认的 22 需要使用-e参数指定端口
rsync -avzp -e "ssh -p 2299" root@192.168.85.133:/opt/ /opt/
5.rsync服务操作
说明:
- 重中之重,如果在服务器上进行备份,也就是cp命令进行备份即可,那么如果两台机器上进行备份怎么办。
- 备份是太常见、且太重要的一个日常工作了。备份源码、文档、数据库、等等。 类似cp命令拷贝,但是支持服务器之间的网络拷贝,且保证安全性。 scp进行传输拷贝。
- 如果是两个或者多台服务器进行拷贝 就是使用rsync工具。
解释:
- 客户端在备份时,会产生大量的数据,将数据进行拷贝到rsync服务端中,不能单一的使用
rsync -azvP
这种形式进行拷贝操作,因为会直接输入密码(会导致密码泄露),哪怕将root用户给禁用了,使用普通用户也是存在局限性,可能会出现权限不足的情况。考虑的问题:
- 限制问题,权限问题,交互式输出密码等等,这样无法在使用默认的ssh协议进行数据备份。
- 所以rsync提供了一个标准的服务端,该服务提供了账户密码认证机制,不需要使用linux的系统用户,保护了数据安全。
图解:
为什么需要rsync服务端:
- 默认情况下,rsync只是一条命令而已,不是一个服务,rsync提供了一种作为系统服务的一种方式。
- 守护进程传输模式是在客户端和服务端之间进行的数据复制。
- 服务端需要配置守护进程,在客户端执行命令,实现数据拉取和推送。
- 解决手动输入命令的操作,保护了数据的安全性。
rsync借助sshd协议同步数据存在缺陷:
- 使用系统用户root,不安全。
- 使用普通用户,权限不够,守护进程传输方式:rsync自身非常重要的功能,不适用系统本身的用户,更加安全。
5-1.部署操作机器
机器 | 作用 |
---|---|
test-1 192.168.85.133 | 服务端(提供rsync服务,接受客户端上传的备份数据) |
test-3 192.168.85.144 | 客户端(将数据备份到服务端) |
5-2.服务端部署
部署流程:
1.安装rsync软件。
2.修改配置文件(监控那个文件)。
3.创建启动rsync用户和数据目录。
4.启动程序(设置开机自启)。
5-2-1.安装与配置
1.安装
yum install rsync -y
2.配置文件
/etc/rsyncd.conf
5-2-2.配置
# 将配置写入到 /etc/rsyncd.conf 文件中
uid = www
gid = www
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
pid file = /var/run/rsyncd.pid
#####################################
[backup] # 名字是自定义的
comment = about rsync 1
path = /backup # 备份文件目录也自定义的
[data] # 名字是自定义的
comment = about rsync 2
path = /data # 备份文件目录也自定义的
5-2-3.配置说明
# 公共参数 全局参数
uid = www # 运行进程的用户 设置干活的进程(父进程依然是root)
gid = www # 运行进程的用户组 设置干活的进程(父进程依然是root)
port = 873 # 监听端口
fake super = yes # 无需让 rsync 以 root 身份运行,允许接收文件的完整属性
use chroot = no # 禁锢推送的数据至某个目录, 不允许跳出该目录
max connections = 200 # 最大连接数
timeout = 600 # 超时时间
ignore errors # 忽略错误信息
read only = false # 对备份数据可读写
list = false # 不允许查看模块信息
pid file = /var/run/rsyncd.pid # rsyncd pid服务
log file = /var/log/rsyncd.log # 运行的日志,出现问题查看日志
auth users = rsync_backup # 定义虚拟用户,作为连接认证用户名
secrets file = /etc/rsync.passwd # 定义 rsync 服务用户连接认证密码文件路径
# 区块信息 局部参数(可以有多个),提供一个服务端的备份目录
[backup] # 定义模块信息名
comment = 注释信息 # 模块注释信息,说明
path = /backup # 定义接收备份数据目录
5-2-4.创建数据目录与启动用户和密码文件
1.创建数据目录 # 区域块path指定的存储的备份文件目录
mkdir /backup
2.创建启动用户,修改文备份文件的权限 # 需要与配置文件相同,用于启动rsync服务的用户
useradd www
chown www.www -R /backup
3.创建密码文件,用于虚拟用户使用的密码,设置权限位600(rsync需要的)
# 非常重要,因为传输是需要这个虚拟用户以及配套的密码文件,而且密码文件权限必须是600
echo "rsync_backup:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
5-2-5.启动服务
1.启动服务,开机自启
systemctl start rsyncd && systemctl enable rsyncd
2.查看 873 默认端口
netstat -tunlp | grep 873
3.查看 /var/run/rsyncd.pid 值
cat /var/run/rsyncd.pid
5-2-6.服务端排错
1.检查rsync的配置文件的路径是否正确 /etc/rsyncd.conf
2.查看配置文件中得path参数的路径是否存在,权限是否正确(属主属组与配置文件uuid参数对应)
3.查看rsync的服务是否启动,端口,进程是否存活
4.查看selinux防火墙是否关闭,iptables是否放行rsync服务端口
5.查看rsync的密码文件路径是否与配置文件相同,密码文件的权限是否是600
6.如果是推送数据,查看配置文件中得用户对`rsync模块`读取权限(一般将模块下的文件设置属主属组都是配置文件的用户)
5-3.客户端操作
5-3-1.安装与配置
1.安装
yum install rsync -y
2.配置文件 # 客户端不需要这个配置文件
/etc/rsyncd.conf
5-3-2.配置密码文件
# 由于rsync客户端,需要将数据传输或者下载,需要使用rsync服务端。
但是需要账户的认证,账户密码就是服务指定号的账户密码 :# rsync_backup:123456
1.直接指定密码文件 # 客户端机器创建,客户端的密码只写密码
echo '123456' >> /etc/my_rsync.pwd
chmod 600 /etc/my_rsync.pwd
2.指定一个环境变量
export RSYNC_PASSWORD='123456'
3.如果不指定变量或者密码文件需要手动指定密码
缺点:
无法进行非交互式操作,也就是写成脚本进行操作rsync的操作。
rsync -avzP /opt/123.txt rsync_backup@192.168.85.133::backup
5-3-3.上传,备份客户端自己的数据
语法:
rsync -avzP 客户端自己的数据路径 账户@ip::模块名
解释:
账户@ip :服务端配置的虚拟用户与服务端的ip地址
::模块名:就是服务端配置文件的模块的名称
1.需要交互式输入密码 # 没有指定密码文件与环境变量
rsync -avzP /opt/123.txt rsync_backup@192.168.85.133::backup
2.指定密码文件 需要使用 --password-file=密码文件路径(权限需要600)
rsync -avzP --password-file=/etc/my_rsync.pwd /opt/123.txt rsync_backup@192.168.85.133::backup
3.使用环境变量
export RSYNC_PASSWORD='123456' # 声明环境变量
rsync -avzP /opt/123.txt rsync_backup@192.168.85.133::backup # 进行操作,自动读取环境变量
5-3-4.下载,客户端下载服务端数据
语法:
rsync -avzP 账户@ip::模块名 客户端自己的数据路径 # 手动输入密码/如果设置了密码变量就不需要密码
rsync -avzP --password-file=密码文件的路径 账户@ip::模块名 客户端自己的数据路径 # 不需要输入密码
1.下载 服务端 备份文件/1.txt 到客户端的1.txt # 使用环境变量
export RSYNC_PASSWORD='123456' # 声明环境变量
rsync -avzP rsync_backup@192.168.85.133::backup /opt
2.下载 服务端 备份文件/1.txt 到客户端的1.txt # 使用配置文件
rsync -avzP --password-file=/etc/my_rsync.pwd rsync_backup@192.168.85.133::backup /opt
5-3-5.密码撤销
1.取消环境变量
unset RSYNC_PASSWORD
# 设置到porfile全局变量文件或者个人变量文件中
2.密码文件
rm -rf /etc/密码文件
# 注意:
在使用过程中,如果密码变量没有声明,要么声明,要么使用变量密码文件,手输入不安全。
5-3-6.排查思路
1.如果使用密码文件的方式上传或者下载备份数据,检查密码文件权限是否是600,是否和服务端设置的密码一致,密码文件只写密码。
2.检查服务端的873的端口,检查服务端是否能连接。
3.客户端的命令需要细心的查看,是上传还是下载,参数等问题。
# 注意:如果是非873默认端口,那么就需要使用--port指定端口
rsync -avzP --port=8733 /opt/1.txt rsync_backup@192.168.85.133::backup
6.脚本
1.服务端部署rsyncd,用于接收客户端推送过来的备份数据
部署rsyncd,以及配置文件信息
2.服务端需要每天校验客户端推送过来的数据是否完整
校验文件的流程
1.查看客户端的md5值
2.把客户端文件+md5校验值,一起发给服务端
3.服务端校验该文件,以及md5值
3.服务端需要每天校验的结果通知给管理员
将服务端校验该文件,以及md5值结果
1.发qq
2.发微信
3.钉钉
4.发邮件
补充部分:
1.删除服务端中备份超过6个月的数据
find /backup -type f -mtime +180 | xargs -i rm -rf {} # 方式1
find /backup -type f -mtime +180 -delete # 方式2
2.将校验的数据存储到文本中
md5sum -c md5sum -c /backup/test-3_192.168.85.144_2025-02-17/all_data.md5 > /opt/md5.mail
2.发送邮件给运维邮箱
mail -s "check-rsync-$(date +%F)" 邮箱@xx.xxx < /opt/md5.mail
vim 客户端脚本.sh
#!/bin/bash
# 注意为了确保环境变量发生变化,在脚本中重新定义一遍
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
name=$(hostname)
ip=$(ifconfig ens33 | awk 'NR==2{print $2}')
yearday=$(date '+%F')
file_name=/backup/${name}_${ip}_${yearday}
mkdir -p $file_name
$(cd / && tar -czf ${file_name}/etc.tar.gz etc)
$(cd / && tar -czf ${file_name}/log.tar.gz var/log)
$(md5sum ${file_name}/*.tar.gz > ${file_name}/all_data.md5)
export RSYNC_PASSWORD='123456'
$(rsync -az /backup/ rsync_backup@192.168.85.133::backup)
$(find /backup -type f -mtime +7 -delete)
vim 服务端脚本.sh
#!/bin/bash
$(md5sum -c md5sum -c /backup/test-3_192.168.85.144_2025-02-17/all_data.md5 > /opt/md5.mail) # 验证
$(mail -s "check-rsync-$(date +%F)" 邮箱@xx.xxx < /opt/md5.mail > /dev/null 2>&1)
$(find /backup -type f -mtime +180 -delete)