美文网首页Linux
rysnc--远程同步

rysnc--远程同步

作者: 凤凤思密达萌萌哒 | 来源:发表于2019-12-18 00:53 被阅读0次

rsync

一款快速增量备份工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步, 功能类似于scp,但是要比scp丰富。
官方网站: http//:rsync.samba.org

特点

1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时 间、软硬接等等,做到特殊权限即可安装。
3、快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的宽带。
4、安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。支持匿名传输,以方便进行网站镜像。

环境

操作系统:Centos 7us
目标服务器:192.168.232.10
源服务器:192.168.232.20
目的:把源服务器上/a目录实时同步到目标服务器的/b目录下。

关闭SELinux,关闭防火墙

vim /etc/selinux/config
->SELINUX=disabled
setenforce 0 #立即生效
systemctl stop/disable firewalld
安装rsync
yum -y install rsync xinetd
systemctl start rsyncd
#注意:两台服务器都需要做

源服务器:192.168.232.10

打开配置文件/etc/rsyncd.conf

添加如下代码 图片.png
创建rsync服务端数据⽬录路径和模块

mkdir /home_test
touch /home_test/home_test

创建用户认证文件

vim /etc/rsync.pass 图片.png
设置⽂件权限

chmod 600 /etc/rsyncd.conf
chmod 600 /etc/rsync.pass
重启rsync

目标服务器192.168.232.20

创建密码⽂件
vim /etc/passwd.txt
123456 #密码
注意:这⾥的密码和客户端的密码是⼀样的
chmod 600 /etc/passwd.txt #设置⽂件权限,只设置⽂件所有者具有读取、写⼊权限

配置完成
rsync -avH --port=873 --progress --delete /home_test user1@192.168.232.10::home_test --password-file=/etc/passwd.txt
/home_test 是指服务端数据⽬录
user1 是客户端设置好的账号
home_test 是指客户端设置的模块名称

rsync 不能实时的去监测、同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。可以使用 rsync+inotify 的组合来解决,可以实现数据的实时同步

安装Inotify-tools⼯具,实时触发rsync进⾏同步

1、查看服务器内核是否⽀持inotify (下⾯输出说明⽀持)
ll /proc/sys/fs/inotify
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_queued_events
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_instances
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_watches
2、安装inotify-tools
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify

图片.png
make && make install
设置系统环境变量,添加软连接

echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh
echo "/usr/local/inotify/lib" > /etc/ld.so.conf.d/inotify.conf
ln -s /usr/local/inotify/include /usr/include/inotify
ln -s /usr/local/inotify/lib/libnotifytools.so.0 /usr/lib64

修改inotify默认参数(inotify默认内核参数值太⼩)

查看系统默认参数值
sysctl -a | grep max_queued_events
结果是:fs.inotify.max_queued_events = 16384
sysctl -a | grep max_user_watches
结果是:fs.inotify.max_user_watches = 8192
sysctl -a | grep max_user_instances
结果是:fs.inotify.max_user_instances = 128

修改参数:

sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"

参数说明

max_queued_events:
inotify队列最⼤度,如果值太⼩,会出现"** Event Queue Overflow **"错误,导致监控⽂件不准确

max_user_watches:
要同步的⽂件包含多少⽬录,可以⽤:find /home_test -
type d | wc -l 统计,必须保证max_user_watches值⼤于统
计结果(这⾥/home_test为同步⽂件⽬录)

max_user_instances:
每个⽤户创建inotify实例最⼤值

创建脚本,实时触发rsync进⾏同步
vim /usr/local/inotify/rsync.sh 图片.png

sh /usr/local/inotify/rsync.sh

mkdir /home_test 图片.png
图片.png
设置脚本开机自动执行

vim /etc/rc.d/rc.local #编辑,在最后添加⼀⾏
sh /usr/local/inotify/rsync.sh &
#设置开机自动在后台运行脚本
chmod +x /etc/rc.d/rc.local
systemctl enable /etc/rc.d/rc.local

错误排查

问题⼀: @ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因: 服务器端的⽬录不存在或⽆权限,创建⽬录并修正权限可解决问题。

问题⼆: @ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因: 服务器端该模块(tee)需要验证⽤户名密码,但客户端没有提供正确 的⽤户名密码,认证失败。 提供正确的⽤户名密码解决此问题。

问题三: @ERROR: Unknown module ‘tee_nonexists' rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因: 服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要 的模块以解决问题。

相关文章

  • rysnc--远程同步

    rsync 一款快速增量备份工具Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步...

  • Git 结合远程代码仓库使用

    将远程的代码下载到本地 进入存放代码的目录,输入命令 修改了代码,同步到远程库上 远程库同步到本地 同步下来的代码...

  • git问题(1)

    1.将项目使用git提交到远程仓库出现的错误 原因:没有同步远程的master 解决:同步远程master...

  • 远程同步

    现在远程仓库的所有变动 git fetch remote-branch 显示某个远程仓库的信息 git remot...

  • Linux 运维学习笔记+暑期项目学习

    rsync--Remote synchronization 解释:远程同步工具促使本地和远程文件同步,且只更新两个...

  • svn的基本操作

    增删改查本地文件到远程仓库 同步远程仓库到本地 每次commit前最好都同步一下远程仓库后再commit

  • CentOS7 desktop openstack queens

    引用 neutron通过pycharm调试Pycharm 下远程调试 Neutron 简介 远程代码同步 远程调试...

  • 文件同步工具rsyncd介绍及安装配置

    rsync的目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地...

  • Rsync 命令的基本使用

    Rsync的介绍 远程数据同步工具,支持本地复制与远程同步,优于scp,cp。rsync基础采用c/s架构,监听端...

  • git本地分支和远程分支如何关联

    一、如何把本地新建分支同步到远程分支上(注:该分支在远程上没有)? 二、又如何在本地把远程分支上新建分支同步到本地...

网友评论

    本文标题:rysnc--远程同步

    本文链接:https://www.haomeiwen.com/subject/irjdnctx.html