Rsync文件同步
Rsync文件同步
- 本章结构
- 关于rsync
1、一款增量备份工具,remote sync,远程同步,支持本地复制或者与其他SSH、rsync主机同步,官方网站:http://rsync.samba.org/。
Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用rsync同步本地硬盘中的不同目录。
Rsync是用户取代rcp的一个工具,Rsync使用所谓的"Rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快,可以参考How Rsync A Practical Overview进一步了解Rsync的运作机制。
Rsync支持大多数的类Unix系统,无论是linux、solaris还是BSD上都经过了良好的测试,此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。
2、特点
能更新整个目录树和文件系统
有选择性的保持符号链接、硬链接、文件属于、权限、设备以及时间等
对于安装来说,无任何特殊权限要求
对于多个文件来说,内部流水线减少文件等待的延时
能用rsh、ssh或直接端口作为传输入端口
支持匿名rsync同步文件,是理想的镜像工具
3、同步源和发起源
Rsync同步源:指备份操作的远程服务器,也称为备份源,主要包括两种:rsync源、ssh源
4、文件格式
备份操作类型:
本地同步:rsync … 本地目录1 本地目录2
rsync+ssh同步:
rsync … ssh源 本地目录 (下行同步即下载)
rsync … 本地目录 ssh源 (上行同步即上传)
rsync+rsync同步:
rsync … rsync源 本地目录 (下行同步即下载)
rsync … 本地目录 rsync源 (上行同步即上传)
5、rsync命令的用法:
基本格式:rsync [选项] 原始位置 目录位置
常用选项:
-a:归档模式,递归并保留对象属性,等同于-rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬链接文件
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
6、同步的优缺点
①定期同步的不足
执行备份的时间固定
当同步源长期不变化时,密集的定期任务是不必要的
②实时同步的优点
一旦出现源出现变化,立即启动备份
只要同步源无变化,则不执行备份
7、linux内核的inotify机制从版本2.6.13开始提供,可以监控文件系统的变动情况,并作出通知响应,辅助软件:inotify-tools
8、调整内核的参数
max_queue_events:监控队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数
9、安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
#inotifywait –mrq -e modify,create,move,delete /var/www/html
选项:-m (monitoring) 实时监控
-r (recursive) 递归
-q (quiet) 安静模式
三、案例1:rsync+ssh同步
试验准备:两台主机,A主机和B主机IP地址分别为192.168.131.130、192.168.131.136,共享目录/usr/local/nginx/html
A主机操作:
# useradd wdd
# passwd wdd
# setfacl -m u:wdd:rwx /usr/local/nginx/html/ #设置ACL权限
# setfacl -m d:wdd:rwx /usr/local/nginx/html/
主机B操作:
# mkdir /client
# rsync -avz wdd@192.168.131.130:/usr/local/nginx/html/* /client
上面操作只同步/usr/local/nginx/html/下的文件,如果写成/usr/local/nginx/html,则同步整个目录
- 案例2:rsync+rsync
试验准备:A主机IP地址为192.168.131.130,B主机IP地址为192.168.131.136
A主机作为同步源:
# mkdir /server
# cd /server/
# chmod 777 /server/ #注意两边都要有相应的权限
# touch server.txt
# vim /etc/rsyncd.conf
use chroot = yes
address = 192.168.131.130
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[share]
comment = rsync server
path = /server
read only = no
dont compress = *.gz #对后面格式不进行压缩
auth users = wdd
secrets file = /etc/rsyncd_users.db
# vim /etc/rsyncd_users.db
wdd:123456 #用户名和密码
# chmod 600 /etc/rsyncd_users.db
#注意一定要改这个权限,否则认证不通过
# killall -9 rsync
# rsync –daemon #只能这样启动rsync
主机B客户端:
进行下载操作
# rsync -avz wdd@192.168.131.130::share /client
也可以写成下面这样:
# rsync -avz rsync://wdd@192.168.131.130/share/* /client/ /
两种格式:
rsync -avz xxx@服务器地址::共享名 本地目录
rsync -avz rsync://xxx@服务器地址/共享名 本地目录
进行上传操作:
# cd /client/
# touch client.txt
# rsync -avz /client/client.txt rsync://wdd@192.168.131.130/share/
- 案例3:rsync+inotify实现文件实时同步
试验准备:主机A的IP地址为192.168.131.130,主机B的IP地址为192.168.131.136,主机A作为同步源
1、主机A操作:
同案例2操作
2、主机B操作:
# tar xf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure
# make
# make install
安装工具后需更改内核参数:vi /etc/sysctl.conf
fs.inotify.max_queue_events=16384 监控队列大小fs.inotify.max_user_instances=1024 最多监控实例数fs.inotify.max_user_watches=1048576 每个实例最多监控文件数
# /usr/local/bin/inotifywait -mrq -e delete,create,modify,move /client/ #对/client目录进行实时监控
可以将上面的命令写成一个shell脚本,只要/client文件夹下面的文件发生修改,立即用rsync同步文件,脚本如下所示:
# vim inotify_check.sh
#!/bin/bash
SRCCMD=" /usr/local/bin/inotifywait -mrq -e delete,create,modify,move /client/"
DESTCMD="rsync -avz /client/* rsync://wdd@192.168.131.130/share/"
${SRCCMD}|while read DIRECTORY EVENTS FILE
do
${DESTCMD}
Done
# chmod +x inotify_check.sh
# export RSYNC_PASSWORD=123456
#将上面变量RSYNC_PASSWORD声明为全局变量,这样就不用每次运行上面脚本输入密码了
# ./inotify_check.sh #运行脚本
打开另外一个窗口,作如下操作:
# cd /client/
# touch 1.txt
只要主机B下的/client文件夹下面的文件发生修改、创建、删除、移动都会被检测到,并·被同步到主机A下的/server下
- 案例4:rsync+inotify+unison实现双机互相同步
实验准备:两台主机,A主机地址为192.168.131.130,主机B的IP地址为192.168.131.136
- 操作主机A
- 配置SSH
# ssh-keygen -t rsa
# ssh-copy-id 192.168.131.136
# ssh root@192.168.131.136#测试是否登录主机B不需要输入密码
- 安装inotify
# tar xf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure
# make && make install
- 安装unison
# tar xf ocaml-3.10.1.tar.gz #先安装unison的底层依赖包
# cd ocaml-3.10.1
# ./configure
# make world opt
# make install
# tar xf unison-2.13.16.tar.gz
# cd unison-2.13.16
# make UISTYLE=text STATIC=true THREADS=true
# make install
# cp unison /usr/local/bin/
- 创建同步目录
# mkdir /backup1
- # vim intify_unison.sh
#!/bin/bash
IP="192.168.131.136"
SRC="/backup1"
DEST="/backup2"
/usr/local/bin/inotifywait -mrq -e modify,create,delete,move ${SRC}| while \
read DIRECTORY EVENTS FILE
do
/usr/local/bin/unison -batch ${SRC} ssh://${IP}/${DEST}
done
# chmod +x intify_unison.sh
- 操作主机B
- 配置SSH
# ssh-keygen -t rsa
# ssh-copy-id 192.168.131.130
# ssh 192.168.131.130 #测试登录主机A是否需要登录密码
- 安装inotify
# tar xf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure
# make && make install
- 安装unison
# tar xf ocaml-3.10.1.tar.gz #安装unision需要的底层依赖包
# cd ocaml-3.10.1
# ./configure
# make world opt
# make install
# make UISTYLE=text THREADS=true STATIC=true
# make install
# cp unison /usr/local/bin/
- 创建同步目录
# mkdir /backup2
- # vim intify_unison.sh
#!/bin/bash
IP="192.168.131.130"
SRC="/backup2"
DEST="/backup1"
/usr/local/bin/inotifywait -mrq -e modify,create,delete,move ${SRC}| while \
read DIRECTORY EVENTS FILE
do
/usr/local/bin/unison -batch ${SRC} ssh://${IP}/${DEST}
done
# chmod +x intify_unison.sh
- 测试两主机是否互相同步数据
- 在主机A上操作:
# ./intify_unison.sh
打开另一个对话窗口,作如下操作:
# cd /backup1/
# touch 1.txt
打开主机B发现了1.txt
- 在主机B上操作:
# ./intify_unison.sh
打开另一个对话窗口,作如下操作:
# cd /backup2/
# touch 2.txt
打开主机A发现了2.txt
Rsync文件同步的更多相关文章
- CentOS系统rsync文件同步 安装配置
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬 ...
- rsync 文件同步和备份
rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件.在这种场景下,rsync 远比 cp 命令和 ftp 命令更加合适,它只会同步需要更新的 ...
- Rsync文件同步工具
前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...
- linux 下的 rsync 文件同步
rsync是linux下的一款快速增量备份工具Remote Sync,是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息.rsync是用 “rsync ...
- inotify 与 rsync文件同步实现与问题
首先分别介绍inotify 与 rsync的使用,然后用两者实现实时文件同步,最后说一下这样的系统存在什么样的问题. 1. inotify 这个具体使用网上很多,参考 inotify-tools 命令 ...
- rsync文件同步、Inotify-tools参数详解
inotifywait用于等待文件或文件集上的一个待定事件,可以监控任何文件和目录设置,并且可以递归地监控整个目录树: inotifywatch用于收集被监控的文件系统计数据,包括每个inotify事 ...
- Rsync文件同步服务器配置
rsync 是一个Unix/Linux系统下的文件同步和传输工具.rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法.可以用来做备份或镜像.一.配置文件rsync ...
- [rsync]——rsync文件同步和备份
实验环境 (1) Rsync服务器:10.0.10.158 (2) Rsync客户端:10.0.10.173 Rsync服务器端的配置 1. 安装xinetd和rsync # yum install ...
- Centos6.5下rsync文件同步安装配置及遇到的问题解决方法
实验节点如下: 源节点:192.168.0.111 备份节点:192.168.0.112 ------------------------------以下部分在两个节点上执行1.防火墙开放873端口( ...
随机推荐
- .net 学习资源(转)
名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例 ...
- Spring MVC体系结构
[Spring MVC类图]<Spring实战>中:<Spring3.0就这么简单>中:[http://blog.csdn.net/gstormspire/article/de ...
- ......那么Win8.1怎么去掉文件夹?
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-05-11) 细心的朋友会发现,在Win8.1这台电脑(计算机)中,除了我们最熟悉的磁盘外,还新增了视频.图片.文档.下载.音 ...
- spring含参数 环绕通知demo
题目:有一个懂得读心术的人需要完成两件事情:截听志愿者的内心感应和显示他们在想什么 <?xml version="1.0" encoding="UTF-8" ...
- c++ 中文字符串处理方法
转自:http://hi.baidu.com/hehehehello/item/dcc44a4a6afc690e6dc2f08b C++处理中文的问题困扰我很久了.之前一旦遇到中文基本就投诸java怀 ...
- TMS3705A PCF7991AT 线路图
- Cortex-M3 Context Switching
http://www.embedded.com/design/embedded/4231326/Taking-advantage-of-the-Cortex-M3-s-pre-emptive-cont ...
- Codeforces Round #310 (Div. 1) A. Case of Matryoshkas 水题
C. String Manipulation 1.0 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...
- LFS7.4编译笔记(3)
在第一部分,我们编译了一个工具链及临时系统,然后在第二部分我们chroot到/mnt/lfs下面,利用临时系统的工具编译了我们最终的LFS系统.不过此时,我们的LFS系统还是不完整的,因为我们还没有安 ...
- Android游戏背景音乐音效音量控制
游戏音效就是我们在玩游戏时出现的音乐,这个也是每个游戏必备的一部分,但有是你做游戏的背景音乐有间断的感觉的话,我们可以用 getCurrentPosition()这个方法来判断一下声音播放的偏移.其实 ...