- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
拓扑:
Linux 1(源主机192.168.1.63)
Linux 2(目标主机192.168.1.64)
需要关闭selinux,否则即使创建/etc/rsyncd.conf文件之后去启动服务也不会生效。
[root@Linux 1~]# setenforce 0
[root@Linux 1 ~]#yum -y install rsync
[root@Linux 1 ~]#systemctl start rsyncd
[root@Linux 1~]# netstat -antup | grep 873#查看873端口是否监听。
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 43447/rsync
tcp6 0 0 :::873 :::* LISTEN 43447/rsync
-a:--archive archive mode权限保存模式,相当于-rlptgoD参数,存档,递归,保持属性等。
-z:--compress压缩模式,当资料在传送到目的端进行档案压缩。
-H:--hard-links保留硬链接文件。
--version:输出rsync版本。
-v:--verbose复杂的输出信息。
-u:--update仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不
覆盖新的文件。
--port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。
--delete:删除那些目标位置有的文件而备份源没有的文件。
--password-file=FILE:从指定密码文件中获取密码。
--bwlimit=KBPS:限制I/O带宽。
--filter “-filename”:需要过滤的文件。
--exclude=filname:需要过滤的文件。
--progress:显示备份过程。
通常常用的选项–avz
对Linux 1网站根目录的/var/www/html目录备份到Linux 2的/web-back 。
服务器:Linux 1
客户端:Linux 2
1.建立测试用户(两台主机都需要操作):
[root@Linux 2 ~]# useradd rget1 && echo "123456" |passwd --stdin rget1
更改用户rget1 的密码。
passwd:所有的身份验证令牌已经成功更新。
[root@Linux 1 ~]# useradd rget1 && echo "123456" |passwd --stdin rget1
更改用户rget1 的密码。
passwd:所有的身份验证令牌已经成功更新。
2.对目录赋予ACL权限:
[root@Linux 1~]# mkdir /var/www/html/ -p#创建目录。
[root@Linux 1 ~]# setfacl -R -m user:rget1:rwx /var/www/html/
[root@Linux 1 ~]# getfacl/var/www/html
getfacl:Removing leading'/'from absolute path names
#file: var/www/html
#owner: root
#group: root
user::rwx
user:rget1:rwx
group::r-x
mask::rwx
other::r-x
3.创建测试数据:
[root@Linux 1 ~]# cp -r /boot/* /var/www/html/
#复制/boot/目录下所有内容到/var/www/html/目录下。
4.服务端上操作:
[root@Linux 2 ~]# mkdir /web-back#创建存放数据目录。
[root@Linux 2 ~]# chown rget1:rget1 -R /web-back/
#修改目录属主、属组为rget1用户。
[root@Linux 1 ~]#rsync -avz /var/www/html/ rget1@192.168.1.64:/web-back/
The authenticity of host '192.168.0.64 (192.168.0.64)' can't be established.
ECDSA key fingerprint is
SHA256:NN12lfXOanqEZuFwR2k6PEtsUyliHoiMPXgM2RQ0n7E.
ECDSA key fingerprint is MD5:da:20:18:a8:41:bb:33:0e:8f:87:2c:8a:33:fe:ea:3a.
Are you sure you want to continue connecting (yes/no)? yes#输入yes。
Warning: Permanently added '192.168.0.64' (ECDSA) to the list of known hosts.
rget1@192.168.0.64's password: #输入rget1用户密码。
sending incremental file list
./
sent 29 bytes received 15 bytes 3.03 bytes/sec
total size is 0 speedup is 0.00
实验开始之前首先客户端服务器端关闭防火墙firewalld否则实验失败:
[root@Linux 1~]# systemctl stop firewalld.service
[root@Linux 2~]# systemctl stop firewalld.service
使用非系统用户进入备份数据,依靠系统中的rsync配置文件/etc/rsyncd.conf进行备份数据,并创建备份账户,最终把rsync以deamon方式运行。
用配置文件定义目录输出。
服务器/备份端:Linux 2
客户端/数据源:Linux 1
[root@Linux 2~]# vim /etc/rsyncd.conf#文件不存在,需要手动创建。
注意:#会出现因注释不兼容的问题而导致推数据时出现报错,配置文件需取消注释或者注释进行换行处理。
uid = root #运行进程的身份。
gid = root #运行进程的组。
address =192.168.1.64 #监听IP。
port = 873 #监听端口。
hosts allow =192.168.1.0/24 #允许同步客户端的IP地址,可以是网段,或者用*表示所有 192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes #是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes。
max connections = 5 #最大连接数。
pid file =/var/run/rsyncd.pid #进程PID,自动生成。
lock file =/var/run/rsync.lock #指max connectios参数的锁文件。
log file =/var/log/rsyncd.log #日志文件位置。
motd file =/etc/rsyncd.motd #客户端登陆之后弹出的消息,需要创建。
[wwwroot] #共享模块名称。
path = /web-back/ #路径。
comment = used for web-data root #描述。
read only = false #只读权限为假。
list = yes #是否允许查看模块信息。
auth users = rsyncuser #备份的用户,和系统用户无关。
secrets file =/etc/rsync.passwd #存放用户的密码文件,格式是 用户名:密码。
自己手写配置文件,不写注释
创建提示文件和用户密码。
#编辑欢迎信息文件。
[root@Linux 2 ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd
[root@Linux 2 ~]# vim /etc/rsync.passwd #创建并编写密码文件。
rsyncuser:password123 #格式为 用户名称:密码。
[root@Linux 2 ~]# chmod 600 /etc/rsync.passwd
#密码文件权限必须是700或者600,否则的话身份验证会失效。
重新启动服务
[root@Linux 2~]#systemctl restart rsyncd
[root@Linux 2 ~]# netstat -antup | grep :873#查看873端口是否监听。
tcp 0 0:::873 :::* LISTEN 45089/xinetd
测试
rsync语法:rsync选项用户名@备份源服务器IP::共享模块名目标目录
[root@Linux 1 ~]# rsync -avz /var/www/html rsyncuser@192.168.0.64::wwwroot
Welcome to Backup Server
Password:#输入密码password123
密码处理
新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可
[root@Linux 1~]# vim /etc/rsync.passwd#创建密码文件,其中中需要指定密码即可。
password123
[root@Linux 1~]# chmod 600 /etc/rsync.passwd#赋予密码文件600权限。
[root@Linux 1~]#rsync-avz /var/www/html \\
rsyncuser@192.168.0.64::wwwroot --password-file=/etc/rsync.passwd推push
[root@Linux 1~]#rsync -azP rsyncuser@192.168.1.202::wwwroot /opt --password-
file=/etc/rsync.passwd拉pull
[root@Linux 1 ~]# vim autobackup.sh#编写脚本。
#!/bin/bash
rsync -avz /var/www/html \\
rsyncuser@192.168.1.64::wwwroot -- password-file=/etc/rsync.passwd
[root@Linux 1 ~]# chmod +x autobackup.sh#赋予脚本执行权限。
[root@Linux 2 ~]# rm -rf /web-back/*
[root@Linux 1 ~]# sh autobackup.sh#测试脚本。
定义计划任务实现定时备份:
[root@Linux 1 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root
通过一系列如关闭 selinux、配置 rsync 选项、设置用户权限、编写配置文件等操作,以及利用脚本和计划任务实现定时自动备份,我们成功搭建起基于 rsync 的高效数据备份方案。在实际应用中,合理运用这些知识,能为 Linux 系统的数据安全与管理提供有力保障。
售前咨询
售后咨询
备案咨询
二维码
TOP