rsync远程同步

rsync远程同步:是一个开源的快速备份工具。可以在不同主机之间同步整个目录。

在远程同步中,一个是源端,还有一个是发起端

源端负责文件的原始位置,发起端和源端的文件同步。

rsync的特点:

拷贝文件,连接文件,设备

可以保持源文件或者目录的权限不变 时间,软硬连接,所有者,所在组等句可以保持不变

可以实现增量同步。只同步发生变化的数据,数据传输效率很高

支持匿名认证

同步方式:

  1. 完整备份,第一次同步都是完整的备份
  2. 往后的同步,都是增量备份(差异备份),只同步变化的数据

rsync是linux系统自带的软件

rsync命令的选项:

-r:递归模式,目录包含子目录里面的所有文件

-l:复制链接文件(软连接)

-v:显示同步过程中的详细信息

-z:传输文件时进行压缩

-a:归档模式,可以保留文件的权限,属性等等

-p:保留文件的权限标记(所有者 所在组)

-t:保留时间标记(时间戳)

-g:保留文件的所在组(管理员权限)

-o:保留文件的所有者(管理员权限)

-H:保留硬链接

-D:保留设备文件和其他特殊文件

--delete:删除目标位置有,但是原始位置没有的文件

下行同步:

从源端同步到客户端

上行同步:

从客户端同步到源端

rsync同步速度很快,适合同步大文件,可以结合数据库同步使用

tes1:源端 192.168.120.70    test2:发起端 192.168.120.110

下行同步

源端-------发起端

test1

修改配置文件

 vim /etc/rsyncd.conf

uid = root

gid = root

use chroot = yes

#禁锢在源目录

address = 192.168.120.70

#监听地址

port 873

#监听端口

log file = /var/log/rsyncd.log

# max connections = 4

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.120.0/24

#指定可以访问服务端的地址

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.120.0/24

dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

#以上述后缀名为结尾的文件,同步时不再压缩

#配置共享模块和目录,用户名,密码。

[test]

path = /opt/test

comment = test

read only = yes

auth users = backuper #用户名随便起

secrets file = /etc/rsyncd_users.db

rsync远程同步_第1张图片

vim /etc/rsyncd_users.db

backuper:123456

chmod 600 /etc/rsyncd_users.db

mkdir test

chmod 777 test

重启

rsync --daemon

netstat -antp | grep rsync

关闭服务

kill $(cat /var/run/rsyncd.pid)

第二种关闭服务方法

这种方必须要删进程号

rm -rf /var/run/rsyncd.pid

kill -9 进程号

rsync远程同步_第2张图片

到test2(发起端)

rsync -avz [email protected]::test /opt

rsync: 发起同步的命令

-avz:保留文件权限,v:显示详细过程 z:同步过程中对文件进行压缩

192.168.120.70::test:模块名称,不是目录名

免密交换

test2:

echo "123456" > /etc/server.pass

chmod 600 /etc/server.pass

rsync -avz --password-file=/etc/server.pass [email protected]::test /opt

rsync远程同步_第3张图片

监控

test2:

把工具拖进来

解压

cd /opt

tar -xf inotify-tools-3.14.tar.gz

cat /proc/sys/fs/inotify/max_queued_events

监控事件队列

cat /proc/sys/fs/inotify/max_user_instances

最多监控的实例

cat /proc/sys/fs/inotify/max_user_watches

每个实例最多监控的文件

vim /etc/sysctl.conf

底行添加

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 1048576

rsync远程同步_第4张图片

sysctl -p

cd /opt/inotify-tools-3.14/

./configure

make && make install

测试监控

test2:

mkdir -p /opt/test

inotifywait -mrq -e modify,create,move,delete /opt/test

[modify (修改)、create (创建)、move (移动)、delete (删除)、attrib (属性更改)]

-m:表示持续监控

-r:递归整个目录

-q:信息提示

-e:指定监控的事件,多个事件用逗号隔开

再开个test2

cd /opt/test

touch 123

echo 123 > 123

mv 123 456

rm -rf 456

rsync远程同步_第5张图片

inotify通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除,移动,修改都可以被监控

inotify机制和rsync配合使用。既可以通知变化,也可以实现同步。

上行同步

test1

vim /etc/rsyncd.conf

read only = no #关闭只读,上行同步需要可以写

rsync远程同步_第6张图片

重启服务

kill $(cat /var/run/rsyncd.pid)

rsync --daemon

 netstat -antp | grep rsync

test2

cd /opt

mkdir data

cd data

touch gq wdf wh yst

cd ..

chmod 777 data

rsync -azH --delete --password-file=/etc/server.pass /opt/data [email protected]::test

--delete:删除目标位置有,但是原始位置没有的文件

如果目标位置没有,原始位置有,那就是复制

test1:

查看结果

rsync远程同步_第7张图片

通过脚本实现监控与同步

vim inotify.sh

#!/bin/bash

CMD="inotifywait -mrq -e modify,create,move,delete /opt/data/"

rsync_cmd="rsync -avz --password-file=/etc/server.pass /opt/data [email protected]::test"

$CMD | while read DIRECTORY EVENT FILE

do

        if[ $(pgrep rsync | wc -l) -le 0 ]

        then

                $rsync_cmd

        fi

done

~

rsync远程同步_第8张图片

chmod 777 inotify.sh

chmod +x /etc/rc.d/rc.local

echo '/opt/inotify.sh' >> /etc/rc.d/rc.local

crontab -e -u root

* * */2 * * /opt/inotify.sh

rsync远程同步_第9张图片

在文件数量较多的情况下,比如百万和千万级别的文件,rm -rf * 速度很慢

rsync可以实现快速删除大量文件

mkdir -p /opt/test1

cd test1

touch {1..50000}.txt

mkdir /home/blank

rsync --delete-before -a -H -v --progress --stats /home/blank /opt/test1

--delete-before:在传输的过程中进行删除

-a:归档

-H:硬链接

-v:输出过程信息

--progress:显示传输过程

--stats:给出文件的传输状态

你可能感兴趣的:(数据库)