在给公司或者学校做系统部署的时候,为了数据安全往往我们至少需要两台服务器,接下来请看:

我们要实现的是把客户端(192.168.0.1)的复制到目标服务器(192.168.0.2)

一、目标服务器

1、安装rsync

yum -y install xinetd rsync

2、修改配置

  vi /etc/xinetd.d/rsync,将yes改成no

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

vi /etc/rsyncd.conf增加要同步的目录

uid=root
gid=root
use chroot=no
max connections=20
secrets file=/etc/rsync_pass
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log [backup]
path=/opt/test
comment=Rsync share test
auth users=root
read only=no
hosts allow=192.168.0.1
hosts deny=*

vi /etc/rsync_pass  配置访问的用户名和密码(这里写root)

root:123456

3、授权并重启服务

chown root:root /etc/rsync_pass
chmod 600 /etc/rsync_pass
chkconfig xinetd on
service xinetd restart

4、检测873端口在吗(防火墙里需要打开该端口)

netstat -natp

5、关闭Selinux(永久更改)

# vi /etc/sysconfig/selinux,将SELINUX=enforcing 修改为SELINUX=disable或者SELINUX=permissive重启服务器

二、客户端配置

1、安装rsync(同上)

2、修改密码文件

vi /etc/rsync_pass 填写和目标服务器里一样的密码

123456

3、授权

chmod 600 /etc/rsync_pass

4、新建客户端备份的文件夹

mkdir /opt/test/backup

5、安装inotify-tools(实时同步用)

6、将压缩包inotify-tools-3.14.tar.gz拷贝到你的目录,比如/opt

7、解压缩

tar -zxvf inotify-tools-3.14.tar.gz

8、进入目录安装

cd inotify-tools-3.14
./configure
make&make install
如果执行有问题
则执行yum install gcc

9、新建脚本文件inotifyrsync.sh

#!/bin/bash
inotify_rsync_fun ()
{
dir=`echo $1 | awk -F"," '{print $1}'`
ip=`echo $1 | awk -F"," '{print $2}'`
des=`echo $1 | awk -F"," '{print $3}'`
user=`echo $1 | awk -F"," '{print $4}'`
/usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,delete,create,attrib ${dir} | while read DATE TIME DIR FILE
do
FILECHAGE=${DIR}${FILE}
/usr/bin/rsync -av --progress --delete --password-file=/etc/rsync_pass ${dir} ${user}@${ip}::${des} && echo "At ${TIME} on ${DATE},
    file $FILECHAGE was backed up via rsync" >> /var/log/rsyncd.log
done
}
count=1
# localdir,host,rsync_module,user of rsync_module,
sync1="/opt/ztb/,192.168.0.2,backup,root"
#############################################################
#main
i=0
while [ ${i} -lt ${count} ]
do
i=`expr ${i} + 1`
tmp="sync"$i
eval "sync=\$$tmp"
inotify_rsync_fun "$sync" &
done

10、授权并执行

chmod 755 inotifyrsync.sh 
bash inotifyrsync.sh &

11、同步测试

在客户端对应目录新建文件,增删改,看一下目标服务器是否改变。

  人到了一定时候,心里会丢掉一片海,好像那些需要靠岸的日子从未出现过一样

                                        ----里则林

两台Linux服务器文件同步的更多相关文章

  1. 两台linux服务器之间免密scp,在A机器上向B远程拷贝文件

    两台linux服务器之间免密scp,在A机器上向B远程拷贝文件 操作步骤:1.在A机器上,执行ssh-keygen -t rsa,一路按Enter,不需要输入任何内容.(如有提示是否覆盖,可输入y后按 ...

  2. 两台linux服务器之间实现挂载

    https://blog.csdn.net/lpp_dd/article/details/78743862 两台linux服务器之间实现挂载: 服务端: 1.首先需要在主机上设置允许挂载的目录 (1) ...

  3. EMC存储同时分配空间到两台LINUX服务器路径不一致导致双机盘符大小不一致

    操作系统:Centos linux6.6 当我们从EMC存储上划分空间同时分配给两台或者多台服务器上时,有的时候会出现在服务器上所生成的磁盘路径是不一致的,这样就会导致盘符名称不一致或者是盘符对应的大 ...

  4. linux命令——scp 两台linux机器间文件或目录传输

    不同的Linux之间copy文件常用有3种方法: 第一种:ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种:采用sam ...

  5. 两台linux机器文件传输之scp

    0.写在前面:一定要注意我们是否有源文件的读权限,是否有目标文件夹的写权限!没有的话要先把权限设置好! *.设置权限的方法:切换到有权限操作文件或文件夹的用户,利用chmod命令修改权限 1.安装: ...

  6. 两台Linux服务器之间复制文件

    一.scp 1.简介 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的 2.软件安装 ...

  7. 在联网时,两台linux服务器传输文件方法

    登陆服务器root用户命令:su - root 传输文件命令:scp +需要传输linux系统文件+空格+目标linux服务器的用户名@服务器ip地址:+传输的文件路径:例:scp /mnt/work ...

  8. 两台linux服务器相互拷贝文件的两个方法

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  9. Inotify+Rsync实现Linux服务器文件同步

    做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/  ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...

随机推荐

  1. PHP str_ireplace() 函数

    实例 把字符串 "Hello world!" 中的字符 "WORLD"(不区分大小写)替换成 "Peter": <?php高佣联盟 w ...

  2. luogu P6091 原根

    LINK:原根 再复习一下原根 防止考场上要NTT求原根的时候不会求... 这道题要求求出n之内的所有原根 根据原根的定义. 原根指 若x对于模n的阶为phi(n)且\(1\leq x\leq n\) ...

  3. 连接云MariaDB实例

    新建实例 MariaDB CVM 内网连接 CVM远程登录测试(同一个VPC下): CVM安装客户端: yum install mysql 连接: mysql -h MariaDB内网ip -u 数据 ...

  4. 深入了解Redis(1)-字符串底层实现

    一.简单动态字符串(SDS) Redis中字符串实现有两种方式,C语言传统字符串(以空字符结尾的字符数组)和简单动态字符串(SDS),并将SDS作为默认字符串表示. C字符串只会作为字符串字面量,用在 ...

  5. 正确的使用HttpClient

    快捷的网络请求,多用HttpClient 但是常规的写法会一大片的TIME_OUT 比如这样的例子 static async Task<string> TestHttpClient(str ...

  6. 004_自己尝试go语言中的方法

    go语言可以给任意类型定义方法,我在学习过程中,一开始一头雾水,但是随着理解的深入,现在也大概知道了什么叫做方法 之前的一些例子其实讲的并不是特别生动,下面我用一个生动的例子演示一下 首先提出需求.我 ...

  7. 9、Java 常用类 Math,Number子类,String,Character

    本小节主要介绍一些如何去使用Java提供的类如何去使用?如何在实战中使用?从来没有用过的如何去学习? 分享一下发哥的学习方法? 1.针对性的学习 在理解自己的需求或者要做某一块的内容后,有针对性,选择 ...

  8. 【Java】AES加机解密工具类代码

    import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypt ...

  9. C#设计模式之4-原型模式

    原型模式(Prototype Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/395 访问. 原型模式属 ...

  10. Flutter 容器(3) - AnimatedPadding

    AnimatedPadding : 会产生动画效果的padding,在给定时间内缩放到指定padding import 'package:flutter/material.dart'; class A ...