微网站建设比较全面的是,施工企业的施工生产计划与建设,破解进入网站后台,代做外国空间网站1. rsync概述
定义#xff1a;rsync是一款数据镜像备份工具#xff0c;支持快速完全备份和增量备份#xff0c;支持本地复制与远程同步。镜像指两份完全相同的数据备份.特点#xff1a; 支持整个目录树和文件系统的更新#xff1b;可选择性地保留符号链接、文件属性、权限…
1. rsync概述
定义rsync是一款数据镜像备份工具支持快速完全备份和增量备份支持本地复制与远程同步。镜像指两份完全相同的数据备份.特点 支持整个目录树和文件系统的更新可选择性地保留符号链接、文件属性、权限、设备及时间戳等(scp 不行)安装无需特殊权限多文件传输效率高可通过SSH或自定义端口进行数据传输。 工作原理涉及数据同步时需要确定源地址、目标地址以及同步基准。rsync在同步前需要进行用户身份验证这取决于使用的连接方式SSH协议或rsync协议第一次会完全备份之后都增量备份。同步基准:例如想让目标主机上的文件和本地文件保持同步则是以本地文件为同步基准将本地文件作为源文件推送到目标主机上。 ![[Pasted image 20241010202428.png]]
2. rsync实验演示
环境准备两台服务器分别创建目录/client和/sync。 RSNC的身份验证机制 ssh登录验证模式 rsync登录验证模式 ssh协议数据同步下行同步下载从远程服务器拉取数据到本地命令格式为rsync -avz 服务器地址:/服务器目录/* /本地目录。上行同步上传将本地数据推送到远程服务器命令格式为rsync -avz /本地目录/* 服务器地址:/服务器目录。rsync协议数据同步环境搭建在NFS服务器上配置rsync服务包括创建配置文件/etc/rsyncd.conf创建认证文件/etc/rsyncd_users.db启动服务。同步操作使用命令rsync -avz rsync://用户名服务器地址/共享模块名 /本地目录进行下载使用命令rsync -avz /本地目录/* rsync://用户名服务器地址/共享模块名进行上传。 rsync 选项解释 -a归档模式递归并保留对象属性 -v显示同步过程 -z在传输文件时进行压缩
实验1 ssh登录验证模式 免密登录
#客户端ssh-keygen -t rsa -b 2048ssh-copy-id 192.168.90.103ssh 192.168.90.103mkdir /client/touch /client/a{1..10}rsync -avz /client/* root192.168.90.103:/sync/#rsync服务器mkdir -p /sync/cd /sync/
实验2 rsync登录验证模式 rsync协议的免密码可以借助一个环境变量实现
#服务器mkdir /syncuseradd lsy1 #创建同名用户passwd lsy1vim /etc/rsyncd.conf #按需求添加address 192.168.90.101 #rsync服务绑定IPport 873 #rsync默认服务端口873log file /var/log/rsyncd.log #日志文件位置pid file /var/run/rsyncd.pid #进程号文件位置[web] #共享名用来连接是写在url上的切记comment web directory backup #共享描述话语path /sync #实际共享目录read only no #是否仅允许读取dont compress *.gz *.bz2 #哪些文件类型不进行压缩auth users lsy1 #虚拟用户secrets file /etc/rsyncd_users.db #认证所需账户密码文件需自行创建-同上#没有注释版
address 192.168.90.101
port 873
log file /var/log/rsyncd.log
pid file /var/run/rsyncd.pid
[web]comment web directory backuppath /syncread only nodont compress *.gz *.bz2auth users lsy1secrets file /etc/rsyncd_users.dbecho lsy1:123456 /etc/rsyncd_users.db #把虚拟用户写入数据库文件chmod 600 /etc/rsyncd_users.db #系统默认不允许身份验证权限过大systemctl enable --now rsyncd #启动服务setfacl -m u:nobody:rwx /sync #给rsync的映射用户nobody设置权限或者chown -R nobody.nobody /sync/#客户端 要实现免密登录mkdir /clientcd /client/touch a{1..10}rsync -avz /client/ rsync://lsy1192.168.90.101/web
echo export RSYNC_PASSWORD123456 /etc/profile #声明的环境变量 虚拟用户密码source /etc/profilersync -avz /client/ rsync://lsy1192.168.90.101/web #这次是免密rm -rf * #可以删除全部在重新用rsync同步·常见错误 chmod 600 ![[Pasted image 20241010214317.png]] hown -R nobody.nobody /sync/ ![[Pasted image 20241010214327.png]]
3.备份 手动备份 自动 定时备份 定时计划任务方式有规律的进行备份 用crontab -e 即可 ![[Pasted image 20241010205012.png]] 实时备份推荐优点 一旦客户端出现变化立即启动备份实时性好。只要客户端无变化则不执行备份节省资源
4. 实验3生产环境常用 配置rsyncinotify实时同步
inotify简介Linux内核特性用于监控文件系统的变化并向应用程序发送相关事件。inotify工具 inotifywait持续监控文件系统事件实时输出结果常用。inotifywatch短期监控任务完成后输出结果。 部署步骤安装gcc编译器解压并编译安装inotify-tools。实现方法编写shell脚本结合inotifywait和rsync命令实现文件系统变化时的即时数据同步。重点rsync同步时若使用–delete选项数据源端不要写 * 匹配要使用目录级别的数据同步rsync -avz --delete /client/ rsync://lsy1192.168.90.100:/web 删除本地比服务器多出来的文件 #客户端 在以及实现rsync协议免密登录的情况下yum -y install gcc* inotify-toolsinotifywait -mrq -e create,delete,modify,attrib,move /clientrsync -avz /client/ rsync://lsy1192.168.90.100:/web--delete删除本地比服务器多出来的文件rsync -avz --delete /client/ rsync://lsy1192.168.90.100:/web #删除本地比服务器多出来的文件或rsync -avz --delete rsync://lsy1192.168.90.100:/web /client/#ssh免密登录使用inotifywait -mrq -e create,delete,modify,attrib,move /clientrsync -avz /client/ root192.168.90.100:/web#或者执行脚本#!/bin/bashainotifywait -mrq -e create,delete,modify,attrib,move /clientbrsync -avz /client/ rsync://lsy1192.168.90.101:/web$a | while read directory event file do$bdone5. 实验4配置unisoninotify实现双向实时同步 unison简介支持双向同步的工具但同步效率低于rsync。 环境要求准备好同步所需的两个目录生成SSH密钥对安装inotify和unison。 安装步骤安装inotify-tools、ocaml、unison。 配置脚本编写shell脚本使用inotifywait监控文件系统变化使用unison进行双向同步。 注意事项源目录不能使用通配符传输防止形成死循环。
#客户端和sync服务器都要装 1先安装inotify
yum -y install gcc* inotify-tools
2再安装ocaml tar -xf ocaml-3.10.1.tar.gz cd ocaml-3.10.1 ./configure make world opt #优化world这个选项 make install 3)安装unison tar -xf unison-2.13.16.tar.gz cd unison-2.13.16 make UISTYLEtext THREADStrue STATICtrue #已经存在Makefile文件不需要./configure cp unison /usr/local/bin/ #装完要互换ssh公钥文件 #分别在客户端和服务器写脚本
#客户端脚本
#!/bin/bash
ainotifywait -mrq -e create,delete,modify,attrib,move /client
b/usr/local/bin/unison -batch /client/ ssh://192.168.90.100//sync/
$a | while read directory event file
do$b
done#服务器脚本
#!/bin/bash
ainotifywait -mrq -e create,delete,modify,attrib,move /sync
b/usr/local/bin/unison -batch /sync/ ssh://192.168.90.101//client/
$a | while read directory event file
do$b
done#都脱离终端运行脚本
nohup bash -x sync.sh #测试
cd /sync touch 文件
cd /client touch 文件
#有bug请在共享目录下创建一个隐藏的参考文件保证删除最后一个非隐藏文件时也能够正常同步
使用场景适用于双方都要需要同步更新的场景
![[Pasted image 20241010211857.png]]
6命令扩展
nohup 命令 #使命令或进程脱离终端运行即没有用户登录也能运行 #将执行过程和结果放入nohup.out文件中 bash -x xxx.sh #显示执行过程和结果当做日志功能使用 set -x 执行每个命令之前先打印该命令及其参数 rsync与unison的主要区别 rsync主要用于单向同步支持快速完全备份和增量备份适合生产环境而unison支持双向同步适用于需要保持两个目录一致性的场景