综合架构学习笔记-2---rsync-实战
综合架构学习笔记-2---rsync-实战
实战1
rsync守护进程部署
测试环境--虚拟机环境
ip10.0.1.0
网关10.0.1.2
子网掩码 255.255.255.0
步骤
服务端
第一步:下载安装软件
[root@localhost ~]# yum install -y rsync
第二步:编写配置文件 把原来的配置文件删除
[root@localhost ~]# vim /etc/rsyncd.conf
uid=rsync
gid=rsync
port=873
fake super = yes
use chroot = no
max connections= 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.0.0/24
#hosts deny =
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment =" welcome to RSYNC backup"
path = /backup
启动配置rsyncd
[root@master ~]# systemctl restart rsyncd
配置注解:
uid=rsync 用户
gid=rsync 组
port=873 端口
fake super = yes 虚拟机用户 伪装管理员
use chroot = no 安全
max connections= 200 同时200个客户端连接
timeout = 300 超时300秒
pid file = /var/run/rsyncd.pid 进程信息
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log 日志文件
ignore errors 忽略错误
read only = false 备份目录可以读写
list = false
hosts allow = 10.0.0.0/24 白名单
#hosts deny =
auth users = rsync_backup 认证用户-rsync——backup
secrets file = /etc/rsync.password 密码信息
[backup] 指定备份目录
comment =" welcome to RSYNC backup"
path = /backup
uid=rsync
gid=rsync
port=873
fake super = yes
use chroot = no
max connections= 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.1.0/24
#hosts deny =
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment =" welcome to RSYNC backup"
path = /backup
这是一个用于rsync守护进程(rsync服务器)的配置文件,通常命名为`rsyncd.conf`。让我们逐项解析所指定的选项:
- `uid=rsync`:设置rsync服务运行时的用户ID为rsync。
- `gid=rsync`:设置rsync服务运行时的组ID为rsync。
- `port=873`:rsync服务监听的端口号为873。
- `fake super = yes`:允许rsync模拟超级用户权限进行文件同步操作(在chroot环境之外)。
- `use chroot = no`:不使用chroot环境,即不对rsync客户端进行目录级别的隔离。
- `max connections= 200`:最大同时连接数为200个。
- `timeout = 300`:设定超时时间为300秒(5分钟),超过这个时间无数据传输将断开连接。
- `pid file = /var/run/rsyncd.pid`:rsync服务的进程ID文件位置。
- `lock file = /var/run/rsync.lock`:rsync服务的锁文件位置。
- `log file = /var/log/rsyncd.log`:rsync服务的日志记录文件路径。
- `ignore errors`:忽略某些可能发生的错误继续运行。
- `read only = false`:允许对共享模块进行读写操作,而非只读。
- `list = false`:禁止列出所有可用的共享模块。
- `hosts allow = 10.0.0.0/24`:仅允许来自10.0.0.0网段的IP地址访问rsync服务。
- `#hosts deny =`:这一行被注释掉了,但若取消注释则可用来设置拒绝哪些IP或IP段访问。
- `auth users = rsync_backup`:定义了授权用户列表,此处仅有rsync_backup一个用户有权连接。
- `secrets file = /etc/rsync.password`:密码文件位置,其中存储了授权用户的登录密码。
- `[backup]`:定义了一个名为"backup"的共享模块。
- `comment =" welcome to RSYNC backup"`:给"backup"模块添加描述信息。
- `path = /backup`:设置"backup"模块对应的本地同步路径为"/backup"。
第三步:创建rsync服务虚拟用户
[root@localhost ~]# useradd rsync -M -s /sbin/nologin
第四步:创建rsync服务的认证密码文件并修改权限
[root@localhost ~]# echo "rsync_backup:123456">/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
第五步:创建备份文件所需的目录并修改用户文件的属主和属组
[root@localhost ~]# mkdir /backup
[root@localhost ~]# chown rsync.rsync /backup -R
命令注解
`chown rsync.rsync /backup -R` 这条命令是用来更改目录 `/backup` 及其子目录下所有文件和目录的所有权的。
- `chown` 是 Linux 系统中更改文件或目录所有权的命令。
- `rsync.rsync` 表示新的所有者和所属组,即将所有者改为用户 `rsync`,所属组改为组 `rsync`。
- `/backup` 是需要更改所有权的目录路径。
- `-R` 或 `--recursive` 参数表示递归地处理目录下的所有文件和子目录,也就是说不仅更改 `/backup` 目录本身的所有权,也更改其下所有层级的文件和目录的所有权。
这条命令的作用是确保 `/backup` 目录及其内容的所有权都属于 `rsync` 用户和 `rsync` 组,这与上面的 rsyncd 配置相呼应,因为在 rsync 服务配置中指定了以 `rsync` 用户和组运行服务。这样可以保证 rsync 服务有正确的权限来访问和管理 `/backup` 目录中的文件。
第六步:启动备份rsync服务
[root@localhost ~]# systemctl start rsyncd
[root@localhost ~]# systemctl enable rsyncd
客户端配置
客户端部署(网站服务器):rsync 配置文件不用改默认即可
第一步:下载安装软件
[root@localhost ~]# yum install -y rsync
第二步:创建一个密码文件
[root@localhost ~]# echo "123456" >/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
第三步:测试用免交互方式同步文件
[root@localhost ~]# rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password
自己的实现演示
[root@node ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.51 db01
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.61 m01
那就备份这个文件吧
一次备份需要输入密码
[root@node ~]# rsync -avz /etc/hosts rsync_backup@10.0.1.134::backup
Password:
sending incremental file list
hosts
sent 215 bytes received 43 bytes 46.91 bytes/sec
total size is 352 speedup is 1.36
直接制定密码文件 前提是你必须有账户和密码,我们前面的配置文件已经有账户和密码了 只不过这是虚拟账户而已
[root@node ~]# rsync -avz /etc/hosts rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 215 bytes received 43 bytes 103.20 bytes/sec
total size is 352 speedup is 1.36
备份结果
[root@master backup]# ls
hosts
[root@master backup]# cat hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.51 db01
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.61 m01
如果出现报错
1.检查防火墙
2.检查selinux
3.检查rsync配置文件是否出错 例如ip段是否符合
4.命令是否出错
5.rsync服务是否正确运行
实验过程中如果发现还是无法正确备份 你在测试过程中可以重来 ,但是生产环境中一定要仔细仔细再仔细 认真认真再认真
事先准备 梳理流程 比什么都重要
ps:
也可以使用服务器的root用户备份一下看一下
rsync -avz /oldboy/* root@10.0.0.25:/backup
rsync:依然是使用的rsync命令行工具。
-avz:保持不变,仍代表归档模式(保留文件属性和递归同步)、详细输出模式(显示同步过程详情)以及压缩模式(传输时启用压缩节省带宽)。
/oldboy/*:源目录及通配符,表示从本地机器的 /oldboy 目录下同步所有的文件和子目录。
root@10.0.0.25:/backup:目标地址改为了用户名(root)+ 主机地址(10.0.0.25)+ 目标路径(/backup),表明将同步到远程主机10.0.0.25上root用户家目录下的/backup目录
命令注解
rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password
-avz:选项参数组合,含义如下:
-a:归档模式,保留源文件的所有属性(如权限、时间戳等)并递归同步目录。
-v:详细输出模式,显示详细的同步过程信息。
-z:压缩模式,在传输过程中启用压缩以减少带宽占用。
/oldboy/*:源目录及通配符,表示从本地机器的 /oldboy 目录下同步所有的文件和子目录。
rsync_backup@10.0.0.25::backup:目标地址,包含了用户名(rsync_backup)、主机地址(10.0.0.25)以及rsync模块名(backup)。这意味着将数据同步到远程主机10.0.0.25上rsync服务的"backup"模块。
--password-file=/etc/rsync.password:指定密码文件,rsync将在连接远程服务器时从该文件中读取密码,从而实现自动身份验证。
综上所述,此命令会把本地机器 /oldboy 目录下的所有文件和子目录,按照详细、递归且压缩的方式同步至远程rsync服务器(IP地址为10.0.0.25)上预设的“backup”共享模块,并通过密码文件进行身份验证
rsync故障案例与排错 ------可作为工作经验
1.1 rsync客户端执行rsync命令错误:
客户端的错误现象:
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup
ERROR: The remote path must start with a module name not a /
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)
1.2 @ERROR: auth failed on module oldboy
客户端的错误现象:
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
1. 密码真的输入错误,用户名真的错误
2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致
3. /etc/rsync.password文件权限不是600
4. rsync_backup:123456密码配置文件后面注意不要有空格
echo "rsync_backup:123456" >>/etc/rsync.password
rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称
1.3 Unknown module 'backup'
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
1. /etc/rsyncd.conf配置文件模块名称书写错误
1.4 Permission denied
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)
sent 196 bytes received 27 bytes 63.71 bytes/sec
total size is 349 speedup is 1.57
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
异常问题解决:
1. 共享目录的属主和属组不正确,不是rsync
2. 共享目录的权限不正确,不是755
1.5 chdir failed
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
1. 备份存储目录没有建立
2. 建立的备份存储目录和配置文件定义不一致
说明:如果没有备份存储目录
1.6 invalid uid rsync
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
rsync服务对应rsync虚拟用户不存在了
1.7 客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码
password file must not be other-accessible
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password:
sending incremental file list
sent 26 bytes received 8 bytes 5.23 bytes/sec
total size is 349 speedup is 10.26
异常问题解决:
rsync客户端的秘钥文件也必须是600权限
个人总结
如果出现报错
1.检查防火墙
2.检查selinux
3.检查rsync配置文件是否出错 例如ip段是否符合
4.命令是否出错
5.rsync服务是否正确运行
6.检查文件权限是否给足
实验过程中如果发现还是无法正确备份 你在测试过程中可以重来 ,但是生产环境中一定要仔细仔细再仔细 认真认真再认真
事先准备 梳理流程 比什么都重要
实战2
排除文件备份实战
需求1-----备份/data 排除1.txt
rsync -avz /data --exclude /data/1.txt rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
--exclude /data/1.txt: 排除同步指定的文件,这里是/data/1.txt,该文件不会被同步到远程服务器。
[root@node data]# rsync -avz /data --exclude /data/1.txt rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
sending incremental file list
sent 221 bytes received 25 bytes 98.40 bytes/sec
total size is 0 speedup is 0.00
需求2 排除一个目录
rsync -avz /data --exclude /data/test rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
--exclude /data/test: 排除同步指定的文件夹,这里是/data/test,该文件不会被同步到远程服务器。
[root@node data]# rsync -avz /data --exclude /data/test rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
sending incremental file list
data/
data/1.txt
data/10.txt
data/2.txt
data/3.txt
data/4.txt
data/5.txt
data/6.txt
data/7.txt
data/8.txt
data/9.txt
sent 604 bytes received 218 bytes 328.80 bytes/sec
total size is 0 speedup is 0.00
重点流程回顾
服务端部署(备份服务器):rsync
第一步:下载安装软件
[root@localhost ~]# yum install -y rsync
第二步:编写配置文件
[root@localhost ~]# vim /etc/rsyncd.conf
uid=rsync
gid=rsync
port=873
fake super = yes
use chroot = no
max connections= 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.0.0/24
#hosts deny =
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment =" welcome to RSYNC backup"
path = /backup
第三步:创建rsync服务虚拟用户
[root@localhost ~]# useradd rsync -M -s /sbin/nologin
第四步:创建rsync服务的认证密码文件并修改权限
[root@localhost ~]# echo "rsync_backup:123456">/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
第五步:创建备份文件所需的目录并修改用户文件的属主和属组
[root@localhost ~]# mkdir /backup
[root@localhost ~]# chown rsync.rsync /backup -R
第六步:启动备份rsync服务
[root@localhost ~]# systemctl start rsyncd
[root@localhost ~]# systemctl enable rsyncd
客户端部署(网站服务器):rsync 配置文件不用改默认即可
第一步:下载安装软件
[root@localhost ~]# yum install -y rsync
第二步:创建一个密码文件
[root@localhost ~]# echo "123456" >/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
第三步:测试用免交互方式同步文件
[root@localhost ~]# rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password