# 文件同步
Posted pansn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# 文件同步相关的知识,希望对你有一定的参考价值。
网络文件共享部署
1. 安装 epel 库
yum upgrade -y
yum -y install epel-release
2. 配置防火墙
firewall-cmd --add-service=nfs --permanent --zone=public
firewall-cmd --add-service=mountd --permanent --zone=public
firewall-cmd --add-service=rpc-bind --permanent --zone=public
firewall-cmd --reload
生产环境应该使用更严格的方式
3. 安装 nfs-server
yum -y install nfs-utils rpcbind
systemctl enable rpcbind nfs-server nfs-lock nfs-idmap
systemctl start rpcbind nfs-server nfs-lock nfs-idmap
4. 创建 NFS 共享目录
mkdir /data
此共享目录存放 jumpserver 的录像及任务结果
5. 设置 NFS 访问权限
vi /etc/exports
/data 192.168.100.*(rw,sync,no_root_squash)
/data 是刚才创建的将被共享的目录, 192.168.100.* 表示整个 192.168.100.* 的资产都有括号里面的权限
也可以写具体的授权对象 /data 192.168.100.30(rw,sync,no_root_squash) 192.168.100.31(rw,sync,no_root_squash)
6. 使 exports 生效
exportfs -a
sersync+rsync实现服务器文件实时同步
架构:
IP | 服务 |
---|---|
192.168.130.13 | rsync-server |
192.168.130.11 | rsync-client sersync |
192.168.130.12 | NFS |
部署rsync
server端:130.13
1、安装rsync
yum install rsync -y
2、配置rsyncd.conf
vim /etc/rsyncd.conf
[root@vm13 backup]# cat /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 2000
timeout = 600
ignore errors
read only = false
list = false
pid file =/var/run/rsyncd.pid # 指定rsync的pid目录
lock file =/var/run/rsync.lock # 指定rsync的锁文件【重要】
log file = /var/log/rsyncd.log
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
hosts allow = 192.168.130.0/24 #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
hosts deny = 0.0.0.0/32 #禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
#####################################
[www]
path = /backup
[bbs]
path = /data
3、建立对应密码文件
echo "rsync_backup:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
4、创建对应的目录并授权
[root@vm13 ~]# groupadd -g 666 www
[root@vm13 ~]# useradd -u 666 -g www www
[root@vm13 ~]# mkdir -p /{backup,data}
[root@vm13 ~]# chown -R www.www /{backup,data}
5、启动服务
systemctl enable rsyncd
systemctl start rsyncd
client端:130.11
6、安装rsync
方法同上
yum install rsync -y
7、配置rsync客户端相关权限认证
echo "123456">/etc/rsync.password
chmod 600 /etc/rsync.password
8、创建待同步数据,在客户端创建一些数据
mkdir -p /data/{www,bbs}
touch /data/www/www.log /data/bbs/bbs.log
cd /data/www && touch {1..3}.txt
9、测试rsync是否同步
[root@vm11 www]# rsync -avzP /data/www/ rsync_backup@192.168.130.13::www/ --password-file=/etc/rsync.password
sending incremental file list
#/data/www/表示本地需要同步的数据目录 rsync_backup@192.168.130.13::www表示服务端的指定名称的模块下 本条命令执行的操作为:将第一个路径参数下的文件同步到第二个路径参数下 即:推模式 调换路径则为:拉模式
./
1.txt
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=4/6)
2.txt
0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=3/6)
3.txt
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=2/6)
4.txt
0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=1/6)
www.log
0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=0/6)
2.部署sersync
1、安装serync
cd /opt
wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86/ /usr/local/sersync
2、修改serync配置
cd /usr/local/sersync/
cp confxml.xml confxml.bak
vim confxml.xml
修改24--28行
24 <localpath watch="/opt/tongbu">
25 <remote ip="127.0.0.1" name="tongbu1"/>
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
修改后的内容为:
24 <localpath watch="/data/www">
25 <remote ip="1192.168.130.13" name="www"/>
26 </localpath>
修改29--35行,认证部分(rsync密码认证)
29 <rsync>
30 <commonParams params="-artuz"/>
31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
33 <timeout start="false" time="100"/><!-- timeout=100 -->
34 <ssh start="false"/>
35 </rsync>
修改后的内容如下:
27 <rsync>
28 <commonParams params="-artuz"/>
29 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
30 <userDefinedPort start="false" port="874"/><!-- port=874 -->
31 <timeout start="true" time="100"/><!-- timeout=100 -->
32 <ssh start="false"/>
33 </rsync>
3、开启守护进程同步数据
/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
配置sersync环境变量
echo"PATH=$PATH:/usr/local/sersync/">>/etc/profile
source /etc/profile
4、启动后返回正常结果如下
/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
5、验证
客户端:
cd /data/www
touch {36..43}.txt
服务端:
多实例情况部署
1、配置多个confxml.xml文件(比如:www、bbs、blog....等等)
confxml-bbs.xml confxml-blog.xml confxml-www.xml(按照单个实例配置即可)
2、根据不同的需求同步对应的实例文件
rsync -avzP /data/www/ rsync_backup@10.1.20.109::www/ --password-file=/etc/rsync.password
rsync -avzP /data/bbs/ rsync_backup@10.1.20.109::bbs/ --password-file=/etc/rsync.password
rsync -avzP /data/test/ rsync_backup@10.1.20.109::blog/ --password-file=/etc/rsync.password
3、分别启动即可
6、添加脚本监控sersync是否正常运行
#!/bin/sh
sersync="/usr/local/sersync/sersync2"
confxml="/usr/local/sersync/confxml.xml"
status=$(ps aux |grep ‘sersync2‘|grep -v ‘grep‘|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi
? chmod +x /usr/local/sersync/check_sersync.sh ?#添加脚本执行权限 ?
把这个脚本加到任务计划,定期执行检测
crontab -e
*/30 * * * * * /usr/local/sersync/check_sersync.sh
rsync缺点:
1.大量小文件同步时,比对时间长,有时候rsync进程会停止
2.同步大文件,10G这样的大文件有时也会有问题,会中断。未完整同步之前是隐藏文件,可通过参数续传
三、实现nfs+rsync同步
架构:
IP | 服务 |
---|---|
192.168.130.13 | rsync-server |
192.168.130.11 | rsync-client sersync nfs-server |
192.168.130.12 | nfs-client |
客户端挂在nfs
1、查询nfs
[root@vm12 nfs]# showmount -e 192.168.130.11
Export list for 192.168.130.11:
/data/test 192.168.130.*
2、挂载目录
mount -o rw,nosuid,fg,hard,intr 192.168.130.11:/data/test /nmt/nfs
3、永久启动
192.168.130.11:/data/test /mnt/nfs nfs defaults,netdev 0 0
部署rsync+serync
参考网址:
以上是关于# 文件同步的主要内容,如果未能解决你的问题,请参考以下文章