Linux中rsync数据镜像工具的解析与应用实战
一、rsync简介
1.1、rsync的简介与特点
rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。
序号 | rsync的特点 |
1 | 可以镜像保存整个目录树和文件系统。 |
2 | 可以增量同步数据,文件传输效率高,因此同步时间相对较短。 |
3 | 可以保持原有文件的权限、时间等属性。 |
4 | 加密传输数据,保证了数据的安全性。 |
rsync有两种模式:【client/server模式】、【client/client模式】 |
rsynchttps://rsync.samba.org/
rsyncd.conf(5) 手册页https://download.samba.org/pub/rsync/rsyncd.conf.5
1.2、rsync的client/server模式
client/server模式下,是在server端启动一个服务端口,然后客户端来连接这个端口,进行数据的同步和传输。
rsync服务端的配置文件是【/etc/rsyncd.conf】 |
|
序号 | 参数 | 说明 |
1 | uid | 指定当该模块传输文件时守护进程应该具有的用户ID,默认值是【nobody】 |
2 | gid | 指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为【nobody】 |
3 | max connections | 指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制 |
4 | pid file | 指定rsync守护进程对应的PID文件路径 |
5 | lock file | 指定支持max connections的锁文件,默认值是【/var/run/rsyncd.lock】 |
6 | log file | 指定了rsync的日志输出文件路径 |
7 | [ixdba] | 定义一个模块的开始,ixdba就是对应的模块名称 |
8 | path | 用来指定需要备份的文件或目录,必填项,这里指定的目录为/webdata |
9 | list | 设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false |
10 | auth users | 用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。 注意:这里的用户和Linux系统用户没有任何关系。这里指定的用户是backup |
11 | secrets file | 指定一个包含“用户名:密码”格式的文件,用户名就是“auth users”选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。 注意:只有在auth users被定义时,该文件才起作用;系统默认没有这个文件,需要自己手动创建一个。 |
客户端拉取示例: | ||
序号 | 参数 | 说明 |
1 | --vzrtopg | 《1》v 是“-verbose”,即详细模式输出; 《2》z 表示“--compress” 即对备份的文件在传输时进行压缩处理; 《3》r 表示“--recursive”,也就是对子目录以递归模式处理; 《4》t 即“--times”,用来保持文件时间信息; 《5》o 即“--owner”用来保持文件属主信息; 《6》p 即“--perms”用来保持文件权限; 《7》g 即“--group”用来保持文件的属组信息; |
2 | --delete | 指定以rsync服务端为基准进行数据镜像同步,也就是要保持rsync服务端目录与客户端目录的完全一致性 |
3 | --progress | 用于显示数据镜像同步的过程 |
4 | backup@192.168.1.9::ixdba | 表示对服务器192.168.1.9中的ixdba模块进行备份,也就是指定备份的模块,backup表示使用“backup”这个用户对该模块进行备份 |
5 | /data | 指定备份文件在客户端机器上的存放路径,也就是将备份的文件存放在备份机的/data目录下 |
6 | --password-file=/etc/server.pass | 用来指定客户机上存放的密码文件位置,这样在客户端执行同步命令时就无需输入交互密码了,注意,这个密码文件的名称和位置可以随意指定,但是在客户机上必须存在此文件,文件的内容仅仅为备份用户的密码,这里指的是backup用户的密码 |
1.3、rsync的client/client模式
序号 | rsync的client/client模式配置示例 |
1 | |
2 | |
二、rsync的client/server模式实战
2.1、服务器端安装rsync并配置
#0-创建/webdata目录(并在该目录下放置一些内容)
mkdir /webdata
ll /webdata#1-服务端安装配置rsync
yum install rsync -y#2-编辑rsync的配置文件
vi /etc/rsyncd.conf
#2.1-在服务端的配置示例内容如下
uid = nobody
gid = nobody
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log[ixdba]
path = /webdata
comment = ixdba file
ignore errors
read only = true
list = false
uid = root
gid = root
auth users = backup
secrets file = /etc/server.pass#3-编辑rsync的用户密码配置文件
vi /etc/server.pass
#3.1-rsync的用户密码文件内容配置如下(这里面的用户名称需要与上面服务端配置的用户名称[auth users]一致)
backup:ck123#4-将rsync以服务的形式启动(先查找到rsync程序的二进制文件,然后再将rsync二进制文件作为守护进程启动)
whereis rsync
/usr/bin/rsync --daemon#5-在防火墙放开ryncs服务端的873端口
iptables -A INPUT -s 192.168.1.11 -p tcp -m tcp --dport 873 -j ACCEPT#6-将rsync的用户密码配置文件设置权限为只有所有者可读写
chmod 600 /etc/server.pass
ll /etc/server.pass#查看本系统的rsync进程
ps -ef|grep rsync#查看rsync服务端的端口(rsync服务端默认端口是873)
netstat -atnlp#查看本系统的ip地址
ifconfig
注意:若在将rsync的二进制文件作为守护进程启动的时候提示“ failed to lock pid file /var/run/rsyncd.pid: Resource temporarily unavailable”(无法锁定pid文件/var/run/rsyncd.pid:资源暂时不可用)则需要先将该文件删除后在启动就可以了,如下所示:
#解决将rsync二进制文件作为守护进程启动报错问题解决流程
#1-先删除已经存在的/var/run/rsyncd.pid文件
rm -rf /var/run/rsyncd.pid#2-再将rsync二进制文件作为守护进程启动
/usr/bin/rsync --daemon
2.2、客户端安装rsync并拉取服务端内容配置
#1-客户端安装rsync
yum install rsync -y#2-创建并编辑rsync的密码文件【rsyncserver.pass】(该文件名称随便取)并写入rsync服务端的密码(如:ck123)
vi /etc/rsyncserver.pass
#2.1-客户端的密码文件写入的rsync密码是
ck123#3-手动实现rsync客户端拉取一次rsync服务端内容(rsync拉取内容是增量拉取,十分方便且高效)
/usr/bin/rsync -vzrtopg --delete --progress backup@192.168.1.9::ixdba /data --password-file=/etc/rsyncserver.pass#如果我们想要实现rsync客户端定时同步rsync服务端的数据,可以使用crontab配置(如:配置每10分钟同步一次)
crontab -e
#当前用户下的crontab文件新增的定时同步rsync服务端内容如下
*/10 * * * * /usr/bin/rsync -vzrtopg --delete --progress backup@192.168.1.9::ixdba /data --password-file=/etc/rsyncserver.pass
Linux的进程管理与监控和任务工具crontab的使用-CSDN博客https://blog.csdn.net/xiaochenXIHUA/article/details/149882125?spm=1001.2014.3001.5501
注意:
《1》如果客户端连接不上rsync服务端,则需要检查服务端的防火墙是否放开了873端口;
《2》如果客户端连接rsync服务端拉取内容报错“ERROR: password file must not be other-accessible”(密码文件不能让其他用户访问)则需要将rsync服务端、客户端的用户密码文件设置为600;
《3》如果客户端连接rsync服务端拉取内容报错“@ERROR: chdir failed”(目录失败)则需要检查rsync服务端配置文件配置的目录是否存在,不存在则需要创建。
三、rsync的client/client模式实战
3.1、推模式将内容推送到另一台主机
#1-确认两台Linux主机上都安装了rsync
rsync
#1.1-若运行rsync后提示没有这个命令则表示没有安装rsync则需要安装
yum install rsync -y#2-采用推模式将本机的文件推送到另一台主机指定路径上命令(如:将本机当前目录下的telnet-0.17-85.el9.x86_64.rpm文件推送到另一台主机的/home/coffeemilk/test路径下)【可增量推送,效率更高更灵活】
rsync -vzrtopg --delete --progress telnet-0.17-85.el9.x86_64.rpm coffeemilk@192.168.1.11:/home/coffeemilk/test#3-采用推模式将本机的指定目录及其包含的所有文件都推送到另一台主机指定路径上命令(如:将本机/data目录及其包含的所有内容都推送到另一台主机的/home/coffeemilk/test路径下)【可增量推送,效率更高更灵活】
rsync -vzrtopg --delete --progress /data coffeemilk@192.168.1.11:/home/coffeemilk/test
《1》检查需要推送到的主机上路径是否存在,不存在则创建
《2》在本机推送内容到需推送到的主机
《3》确认被推送到的主机主机文件是否被推送到
3.2、拉模式将另一台主机的内容拉取到本机
#示例1-将另一台主机192.168.1.11的/home/coffeemilk/test/ai.mp4文件下载到本机的/data目录下且保持文件的属性权限内容都不变
rsync -vzrtopg --delete --progress coffeemilk@192.168.1.11:/home/coffeemilk/test/ai.mp4 /data#示例2-将另一台主机192.168.1.11的/home/coffeemilk/test目录都下载到本机的/data目录下且保持test目录及其包含内容的属性权限内容都不变
rsync -vzrtopg --delete --progress coffeemilk@192.168.1.11:/home/coffeemilk/test /data