rsync远程同步

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

源端负责文件起始位置,发起端和源端文件同步,拷贝文件,连接文件设备,

在保持源文件的权限,所有者,所在组,时间,软连接等都可以保持不变,实现增量同步,值同步发生变化的数据,数据传输效率很高,支持匿名,适合同步大文件,数据库可以同步

同步方式:

1 完整备份,第一次备份都是完整备份

2 往后的备份都是增量备份,同步变化的数据

rsync的命令选项:

-r 递归模式,目录和子目录的内容

-l 复制链接文件,软链接

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

-z 文件传输,进行压缩

-a 归档模式,保留文件的原有权限

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

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

-g 保留文件的所有者

-o 保留文件的所在组

-H 保留硬链接

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

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

下行同步:源端到客户端

上行同步:客户端到源端

test1 192.168.10.102

test2 192.168.10.101

下行同步:

test 1

systemctl stop firewalld

setenforce 0

vim /etc/rsyncd.conf

***************************************

uid = root

gid = root

use chroot = yes

#禁锢在源文件

address = 192.168.10.10 #

#监听地址

port = 873

#监听端口

log file = /var/log/rsync.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.10.0/24

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

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

取消注释:以上述后缀名的,同步时不进行压缩

配置共享模块和目录、账户、密码

[test]

path = /opt/test 指定共享目录

comment = test

read only = no

auth users = backuper

secrets file = /etc/rsyncd_users.db

******************************************

vim /etc/rsyncd_users.db

***************************************

backuper:123456

***************************************

赋权 chmod 600 /rsyncd_users.db

创建共享文件夹

mkdir -p /opt/test

chmod 777 /opt/test

rsync --daemon 重启

netstat -antp | grep rsync 查看服务是否启动,是否正常运行

kill $(cat /var/run/rsyncd.pid) 关闭服务

验证

test1

**********************

cd /opt/test

创建文件到/opt/test

**********************

test2

rsync -avz backuper@192.168.10.102::test /opt/

*************************************

rsync 发起同步的命令

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

:test 模块名称

/opt/ 存放路径

*************************************

免密交互

免密交换

test2

echo"123456"> /etc/server.pass

chmod 600 /etc/server.pass

rsync -avz --password-file=/etc/server.pass backuper@192.168.10.10::test /opt

上行同步:

inotifv通知接口,可以来监控文件系统的各种变化,文件存取,删除,移动都可以来监控

inotifv机制和rsynct同步一起使用,既可以实现监控,也可以实现同步

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

监控事件列队

最多监控的实例

每个实例最多监控的文件

test2

vim /etc/sysctl.conf

********************************

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 1048576

********************************

sysctl -p

./configure

make && make install

test1

vim /etc/rsyncd.conf

********************************

read only = no

********************************

test2监控

test2
inotifywait -mrq -e modify,create,move,delete /opt/test/
-m 持续监控
-r 递归整个目录
-q 简化的输出信息,信息提示
-e 指定监控的事件,多个事件用逗号隔开

写脚本,功能:既可以上行同步,也可以监控

vim /opt/inotifg

***********************************************************************

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

rsync_cmd="rsync -avz --password-file=/etc/server.pass /opt/data backuper@192.168.10.10::test"

$CMD | while read DIRECTORY EVENT FILE

do

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

then

$rsync_cmd

fi

done

***********************************************************************

给脚本777权限

chmod 777 /opt/inotifg

在系统启动期间自动运行用户自定义的命令或脚本

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同步数据

/home/blank/ 创建blank文件夹,在其内部多个创建文件,写入内容

将此文件夹/opt/test1/ 下的内容与/home/blank/同步

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

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

-a 归档

-H 硬链接

-v 输出过程信息

--progress 显示传输过程

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

执行完后:test1文件夹更新到与blank相同

test1和blank两个内的文件一样

相关推荐
drebander13 小时前
SQL 实战:日期与时间函数 – 统计数据的时间跨度与趋势
linux·数据库·sql
winner888113 小时前
Hive SQL 之 `LATERAL VIEW EXPLODE` 的正确打开方式
hive·hadoop·sql·explode·lateral view·hive split
随猿Fa13 小时前
arthas查看拼接好参数的sql, redis, es完整可直接执行的命令
redis·sql·elasticsearch
计算机学无涯20 小时前
Spring事务回滚
数据库·sql·spring
天冬忘忧1 天前
Flink优化----FlinkSQL 调优
大数据·sql·flink
后端转全栈_小伵1 天前
MySQL外键类型与应用场景总结:优缺点一目了然
数据库·后端·sql·mysql·学习方法
不剪发的Tony老师1 天前
SQL实现新年倒计时功能
数据库·sql
Suwg2092 天前
《手写Mybatis渐进式源码实践》实践笔记(第七章 SQL执行器的创建和使用)
java·数据库·笔记·后端·sql·mybatis·模板方法模式
丁总学Java2 天前
优化 invite_codes 表的 SQL 创建语句
java·数据库·sql
冰镇毛衣2 天前
4.5 数据表的外连接
数据库·sql·mysql