wordpress建站全教程,泰安市卓创网络科技有限公司,做网站子页,织梦cms网站搬家文章目录 1. rsync1.1 增量同步1.2 rsync 指定目录 2. rsync应用场景3. rsync服务端#xff08;守护进程模式#xff09;3.1 检查网络连通性3.2 查看rsync软件包3.3 修改配置文件3.4 启动服务3.5 准备环境3.5.1 添加rsync虚拟用户3.5.2 创建rsync_backup用户的密码文件3.5.3 … 文章目录 1. rsync1.1 增量同步1.2 rsync 指定目录 2. rsync应用场景3. rsync服务端守护进程模式3.1 检查网络连通性3.2 查看rsync软件包3.3 修改配置文件3.4 启动服务3.5 准备环境3.5.1 添加rsync虚拟用户3.5.2 创建rsync_backup用户的密码文件3.5.3 创建模块对应目录 3.5 服务端本地测试3.6 客户端测试3.6.1 非交互式备份文件 4. 案例-书写客户端定时备份/etc脚本4.1 为服务端配置文件添加新模块4.2 代码4.3 添加cron任务 5. 思维导图 1. rsync rsyncRemote Sync是 Linux/Unix 下的 远程增量文件同步工具支持本地和远程文件传输以 高效、低带宽占用 著称。 1.1 增量同步
同步文件方式说明增量同步仅同步新增的或修改的文件全量同步无论文件是否变化全部重新传输scp
1.2 rsync 指定目录
在rsync命令中
/etc/表示目录下的内容
/etc表示该目录及目录下内容
与创建软连接一样/etc表示为目录创建软连接/etc/表示该目录下的文件与ls -ld也相同原理一样
[rootnfs01 ~]# ll -d /sbin/
dr-xr-xr-x 2 root root 20480 6月 11 19:10 /sbin/
[rootnfs01 ~]# ll -d /sbin
lrwxrwxrwx 1 root root 8 3月 6 2021 /sbin - usr/sbin2. rsync应用场景
rsync应用场景目标针对机器rsynccron实现定时备份配置文件、代码、日志、数据不需要实时备份内容绝大部分机器、服务都能使用rsynclscynd/sersync实现实时同步针对数据相关的服务存储nfs、数据库存储nfs异地容灾本质也是定时或实时同步看公司是否需要异地备份
3. rsync服务端守护进程模式
3.1 检查网络连通性
# ping本机
[rootbackup ~]# ping 172.16.1.41
PING 172.16.1.41 (172.16.1.41) 56(84) bytes of data.
64 bytes from 172.16.1.41: icmp_seq1 ttl64 time0.023 ms
64 bytes from 172.16.1.41: icmp_seq2 ttl64 time0.024 ms
^C
--- 172.16.1.41 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1063ms
rtt min/avg/max/mdev 0.023/0.023/0.024/0.000 ms
[rootbackup ~]# ping backup
PING backup (172.16.1.41) 56(84) bytes of data.
64 bytes from backup (172.16.1.41): icmp_seq1 ttl64 time0.017 ms
64 bytes from backup (172.16.1.41): icmp_seq2 ttl64 time0.023 ms
^C
--- backup ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1047ms
rtt min/avg/max/mdev 0.017/0.020/0.023/0.003 ms# ping rsync客户端
[rootbackup ~]# ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq1 ttl64 time0.866 ms
64 bytes from 172.16.1.31: icmp_seq2 ttl64 time0.310 ms
^C
--- 172.16.1.31 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1014ms
rtt min/avg/max/mdev 0.310/0.588/0.866/0.278 ms
[rootbackup ~]# ping nfs01
PING nfs01 (172.16.1.31) 56(84) bytes of data.
64 bytes from nfs01 (172.16.1.31): icmp_seq1 ttl64 time0.440 ms
64 bytes from nfs01 (172.16.1.31): icmp_seq2 ttl64 time0.354 ms
64 bytes from nfs01 (172.16.1.31): icmp_seq3 ttl64 time0.330 ms
^C
--- nfs01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2076ms
rtt min/avg/max/mdev 0.330/0.374/0.440/0.047 ms
3.2 查看rsync软件包
默认系统自带rsync
[rootbackup ~]# rpm -qa |grep rsync
rsync-3.1.3-7.ky10.x86_64
rsync-help-3.1.3-7.ky10.noarch
[rootbackup ~]# rpm -ql rsync
/etc/rsyncd.conf # rsync服务端的配置文件
/etc/sysconfig/rsyncd
/usr/bin/rsync
……3.3 修改配置文件
路径/etc/rsyncd.conf [rootbackup ~]# cat /etc/rsyncd.conf
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super yes
uid rsync
gid rsync
use chroot no
max connections 2000
timeout 600
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 0.0.0.0/32
auth users rsync_backup
secrets file /etc/rsync.password
#####################################
[data]
comment www by old0boy 14:18 2012-1-13
path /data
[backup]
comment www by old0boy 14:18 2012-1-13
path /backup3.4 启动服务
[rootbackup ~]# systemctl start rsyncd.service
[rootbackup ~]# systemctl enable rsyncd.service
[rootbackup ~]# ps -ef |grep [r]sync
root 2106 1 0 18:53 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
[rootbackup ~]# ss -lntip |grep [r]sync
LISTEN 0 5 0.0.0.0:873 0.0.0.0:* users:((rsync,pid2106,fd5))
LISTEN 0 5 [::]:873 [::]:* users:((rsync,pid2106,fd6))3.5 准备环境
3.5.1 添加rsync虚拟用户
[rootbackup ~]# id rsync
id: “rsync”无此用户
[rootbackup ~]# useradd -s /sbin/nologin -M rsync
[rootbackup ~]# tail -1 /etc/passwd
rsync:x:1000:1000::/home/rsync:/sbin/nologin3.5.2 创建rsync_backup用户的密码文件
密码文件所有者必须是root用户而且只能被root用户读写
echo rsync_backup:1 /etc/rsync.password
chmod 600 /etc/rsync.password3.5.3 创建模块对应目录
rsync程序需要读写目标目录所以要设置目录的所属用户和所属组
[rootbackup ~]# mkdir /data
[rootbackup ~]# chown rsync:rsync /data/
[rootbackup ~]# ll /data/ -d
drwxr-xr-x 2 rsync rsync 86 6月 12 11:46 /data/3.5 服务端本地测试
rsync -avz 需要备份的文件/目录 rsync用户名服务器ip或主机名::模块名称 -a相当于-rlptgoD -r递归传输目录及文件-l传输软连接-p保持文件权限-o保持文件所有者-g保持文件所属用户组-t保持修改时间不变-D–devices 保持设备文件信息 -v显示传输过程 -z在传输过程中压缩数据减少宽带占用和提高传输速度
[rootbackup ~]# rsync -avz /etc/passwd rsync_backupbackup::data
Password: # 输出该用户名的密码
sending incremental file list
passwdsent 859 bytes received 43 bytes 360.80 bytes/sec
total size is 1,890 speedup is 2.10
[rootbackup ~]# ll /data/
-rw-r--r-- 1 rsync rsync 1890 6月 12 10:07 passwd3.6 客户端测试
[rootnfs01 ~]# rsync -avz /etc/hosts rsync_backupbackup::data
Password:
sending incremental file listsent 48 bytes received 20 bytes 15.11 bytes/sec
total size is 311 speedup is 4.57
3.6.1 非交互式备份文件
# 创建密码文件
[rootnfs01 ~]# echo 1 /etc/rsync-client.password
# 密码文件只能被root读写
[rootnfs01 ~]# chmod 600 /etc/rsync-client.password
# 备份文件时指定密码文件
[rootnfs01 ~]# rsync -avz /etc/hostname rsync_backupbackup::data --password-file/etc/rsync-client.password
sending incremental file listsent 51 bytes received 20 bytes 142.00 bytes/sec
total size is 6 speedup is 0.084. 案例-书写客户端定时备份/etc脚本
客户端将目标目录打包rsync备份数据客户端清理旧的打包文件保留7天
4.1 为服务端配置文件添加新模块
……
[backup]
comment www by old0boy 14:18 2012-1-13
path /backup备份的数据会存放到/backup目录下
4.2 代码
[rootnfs01 ~]# cat /server/scripts/rsync_backup.sh
#!/bin/bash
##############################################################
# File Name:rsync_backup.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:定时备份
##############################################################
export LANGen_US.UTF-8
# vars
datedate %F_%w # 时间
iphostname -I |awk {print $2} # 获取客户端ip
bak_dir/backup/ # 压缩包存放目录
# vars rsync 服务端变量
userrsync_backup # rsync用户名
rsync_server_ip172.16.1.41 # rsync服务器ip
module_namebackup # rsync的模块名称
pass_file/etc/rsync-client.password # 客户端的密码文件路径# 打包
function package(){# 确定压缩包存放目录若不存在则创建[ ! -d ${bak_dir}${ip} ] mkdir -p ${bak_dir}${ip}# 打包压缩tar zcf ${bak_dir}${ip}/etc-${date}.tar.gz /etc/[ $? -eq 0 ] || { # 如果压缩失败则退出echo tar failedexit 1}
}
# rsync备份数据
function rsync_backup(){# rsync传输到服务器rsync -avz ${bak_dir} ${user}${rsync_server_ip}::${module_name} --password-file${pass_file}[ $? -eq 0 ] || { # 如果传输失败则退出echo rsync failedexit 2}
}
# 清理旧的压缩包
function clean_tar(){# 清理旧的备份find $bak_dir -type f -name *.tar.gz -mtime 7 |xargs rm -f
}
# main函数
function main(){packagersync_backupclean_tar
}# command
main
[rootnfs01 ~]# bash /server/scripts/rsync_backup.sh
tar: Removing leading / from member names
sending incremental file list
172.16.1.31/etc-2025-06-12_4.tar.gzsent 163 bytes received 13,928 bytes 28,182.00 bytes/sec
total size is 5,349,099 speedup is 379.61
[rootnfs01 ~]# ll /backup/172.16.1.31/
总用量 5224
-rw-r--r-- 1 root root 5349099 6月 12 20:05 etc-2025-06-12_4.tar.gz再查看服务端是否有压缩包
[rootbackup ~]# ll /backup/172.16.1.31/
总用量 5224
-rw-r--r-- 1 rsync rsync 5349099 6月 12 20:05 etc-2025-06-12_4.tar.gz服务端和客户端的压缩包时间一致代码运行成功
4.3 添加cron任务
crontab -e
0 0 * * * bash /server/scripts/rsync_backup.sh /dev/null 215. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX