# 文件同步

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

参考网址:

官方文档

参考1


以上是关于# 文件同步的主要内容,如果未能解决你的问题,请参考以下文章

超大文件同步容易中断 怎么办?

#VSCode保存插件配置并使用 gist 管理代码片段

多线程 Thread 线程同步 synchronized

TODO:Github的使用技巧之同步代码

同步代码 [重复]

php 测试同步片段