文件同步RSYNC
Posted lingshu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件同步RSYNC相关的知识,希望对你有一定的参考价值。
特点:
使用rsync算法。支持多平台
rsync同步源表示服务端
rsync发起端表示客户端
命令格式:rsync [选项] 原始位置 目标位置
常用选项:
-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬链接文件
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件(强制同步,多余的全删掉)
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
ssh模式:
同步源:
cd /var/ssh
setfacl -m u:zhangsan:rwx . #对目录进行授权
发起端:
rsync -avz [email protected]:/var/ssh/* /var/ssh-c/ #下行同步
rsync -avz /var/ssh-c/* [email protected]:/var/ssh/ #上行同步
rsync模式:
同步源:
创建配置文件(默认不存在)
vim /etc/reyncd.comf
port 873 #指定端口
log file = /var/log/rsyncd.log #指定日志文件存放位置
pid file = /var/run/rsync.pid #pid文件存放位置
[share] #共享名
connect = rsync server #描述信息
path = /var/rsync #同步路径
read only = yes #读写权限【yes表示开启只读,false表示可以写。如果是yes使用rsync源上行同步时会报错】
dont compress = *.gz *.bz2 *.zip #不压缩的后缀
auth users = aa #认证的用户名
secrets file = /etc/rsyncd_users.db #认证的密码文件(默认不存在,也需要创建)
创建密码文件:
vim /etc/rsyncd_users.db
aa:123456 #用户名:密码
chmod 600 /etc/rsyncd_users.db #密码文件必须改为600,否则认证失败。
启动rsync
rsync --daemon #--daemon表示以进程的方式启动
netstat -antp查看有没有873端口
发起端:
两种共享名同步格式:
rsync -avz [email protected]::share /var/rsync-c/
rsync -avz rsync://[email protected]/share /var/rsync-c/
免密码验证
ssh源模式:
(密钥对登陆)
ssh-keygen -t rsa
ssh-copy-id [email protected]
RSYNC模式:
源声明环境变量export RSYNC_PASSWORD=密码
实时同步:
RSYNC+INOTIFY
gcc编译环境:
yum install -y gcc*
软件包:
inotify-tools-3.14.tar.gz ocaml-3.10.1.tar.gz unison-2.13.16.tar.gz
安装:
tar -zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14 && ./configure && make && make install
调整inotify内核参数
vim /etc/sysctl.conf(非必需,具体大小根据实际情况来)
max_queue_events 监控队列大小。官方推荐16384
max_user_instances 最多监控实例数。官方推荐1024
max_user_watches 每个实例最多监控文件数。官方推荐1028576
编写触发rsync机制的脚本
vim rsync.sh
#!/bin/bash
a="inotifywait -mrq -e modify,create,move,delete /var/rsync-c"
#监控对指定目录的更改(modify)、创建(create)、移动(move)、删除(delete)
b="rsync -avz /var/rsync-c/* [email protected]:/var/rsync"
#进行rsync上行同步操作
$a | while read directory event file
#持续监控过程中一旦读到了目录指定事件的发生。执行do...done里面的操作。
do
$b
done
脚本后台持续运行
bash rsync.sh &
yum install -y gcc*
软件包:
inotify-tools-3.14.tar.gz ocaml-3.10.1.tar.gz unison-2.13.16.tar.gz
安装:
tar -zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14 && ./configure && make && make install
调整inotify内核参数
vim /etc/sysctl.conf(非必需,具体大小根据实际情况来)
max_queue_events 监控队列大小。官方推荐16384
max_user_instances 最多监控实例数。官方推荐1024
max_user_watches 每个实例最多监控文件数。官方推荐1028576
编写触发rsync机制的脚本
vim rsync.sh
#!/bin/bash
a="inotifywait -mrq -e modify,create,move,delete /var/rsync-c"
#监控对指定目录的更改(modify)、创建(create)、移动(move)、删除(delete)
b="rsync -avz /var/rsync-c/* [email protected]:/var/rsync"
#进行rsync上行同步操作
$a | while read directory event file
#持续监控过程中一旦读到了目录指定事件的发生。执行do...done里面的操作。
do
$b
done
脚本后台持续运行
bash rsync.sh &
以上是关于文件同步RSYNC的主要内容,如果未能解决你的问题,请参考以下文章