4.6.2 Rsync文件同步

Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。你可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数据传输,Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync使用TCP873端口。

1. 搭建Rsync服务器

部署Rsync服务器需要创建至少一个配置文件,默认在系统中并不存在Rsync配置文件,对于服务器而言,配置文件创建完成后,使用守护进程模式启动rsync程序即可。下面将以图4-15为原型创建配置文件,将/common目录发布给所有的客户端主机。因为Rsync是Andrew Tridgell(Samba的作者)与Paul Mackerras合作开发的软件,所以Rsync配置文件域Samba配置文件比较相似。Rsync主要分为三个配置文件:rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)和rsyncd.motd(服务器信息文件)。

[[email protected] ~]# yum -y install rsync
[[email protected] ~]# mkdir /common ; cp /etc/init.d/* /common/
[[email protected] ~]# vim /etc/rsyncd.conf
#/etc/rsync.conf
#设置服务器信息提示文件名称,在该文件中编写提示信息
motd file = /etc/rsyncd.motd
#开启Rsync数据传输日志功能
transfer logging = yes
#设置日志文件名称,可以通过log format参数设置日志格式
log file = /var/log/rsyncd.log
#设置Rsync进程号保存文件名称
pid file = /var/run/rsyncd.pid
#设置锁文件名称
lock file = /var/run/rsyncd.lock
#设置服务器监听的端口号,默认为873
port = 873
#设置服务器所监听网卡接口的IP地址,这里服务器IP地址为192.168.0.254
address = 192.168.0.254
#设置进行数据传输时所使用的账户名称或ID号,默认使用nobody
uid = nobody
#设置进行数据传输时所使用的组名称或GID号,默认使用nobody
gid = nobody 
#设置use chroot为yes后,rsync会首先进行chroot设置,将根映射到path参数路径下,	对客户端而言,系统的根就是path参数所指定的路径。但这样做需要chroot权限,并且	在同步符号连接资料时仅会同步名称,而内容将不会同步。
use chroot = no
#是否允许客户端上传数据,这里设置为只读
read only = yes
#设置并发连接数,0代表无限制。超出并发数后,如果依然有客户端连接请求,则将会	受到稍后重试的提示消息
max connections = 10
#模块,Rsync通过模块定义同步的目录,模块以[name]的形式定义,这与Samba定义共	享目录是一样的效果。在Rsync中也可以定义多个模块。
[common]
#comment定义注释说明字串
comment = Web content
#同步目录的真实路径通过path指定
path = /common
#忽略一些IO错误
ignore errors
#exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据
#exclude = test/
#设置允许连接服务器的账户,账户可以是系统中不存在的用户
auth users = tom,jerry
#设置密码验证文件名称,注意该文件的权限要求为只读,建议权限为600,仅在设置auth 	users参数后有效
secrets file = /etc/rsyncd.secrets
#设置允许哪些主机可以同步数据,可以是单个IP,也可以是网段,多个IP与网络之间	使用空格分隔
hosts allow = 192.168.0.0/255.255.255.0
#设置拒绝所有(除host allow定义的主机外)
hosts deny = *
#客户端请求显示模块列表时,本模块名称是否显示,默认为true
list = false

接下来,通过echo的方式创建密码文件/etc/rsyncd.secrets,需要注意的是,密码文件不可以对所有人开放可读权限,为了安全,建议设置权限为600。创建服务器提示信息文件并向该文件中导入欢迎词。由于Rsync默认不是开机启动服务,为了实现开机启动Rsync服务,我们可以通过echo将rsync --daemon追加至开机启动文件/etc/rc.local。最后通过设置iptables开启873端口的入站数据请求。

[[email protected] ~]# echo "tom:pass" > /etc/rsyncd.secrets
[[email protected] ~]# echo "jerry:111" >> /etc/rsyncd.secrets
[[email protected] ~]# chmod 600 /etc/rsyncd.secrets 
[[email protected] ~]# echo "welcome to access" > /etc/rsyncd.motd
[[email protected] ~]# rsync --daemon
[[email protected] ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local 
[[email protected] ~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT
[[email protected] ~]# service iptables save

2. 客户端同步数据

在客户端同样使用rsync命令进行初始化数据传输,使用同样的程序,但客户端主机不需要--daemon选项。

[[email protected] ~]# yum -y install rsync
[[email protected] ~]# rsync -vzrtopg --progress [email protected]::common /test
[email protected]‘s password:

rsync命令

描述:一个快速、多功能的远程(或本地)数据复制工具。

用法:见表4-6。SRC表示源路径,DEST表示目标路径。

表4-6


本地复制


rsync [选项] SRC ... [DEST]


通过远程shell复制


下载数据


rsync [选项] [[email protected]]HOST:SRC ... [DEST]


上传数据


rsync [选项] SRC ... [[email protected]]HOST:DEST


通过rsync进程复制


下载数据


rsync [选项] [[email protected]]HOST::SRC ... [DEST]


rsync [选项] rsync://[[email protected]]HOST[:PORT]/SRC ... [DEST]


上传数据


rsync [选项] SRC ... [[email protected]]HOST::DEST


rsync [选项] SRC ... rsync://[[email protected]]HOST[:PORT]/DEST

rsync的命令格式可以为以下六种:

rsync [OPTION]... SRC DEST

rsync [OPTION]... SRC [[email protected]]HOST:DEST

rsync [OPTION]... [[email protected]]HOST:SRC DEST

rsync [OPTION]... [[email protected]]HOST::SRC DEST

rsync [OPTION]... SRC [[email protected]]HOST::DEST

rsync [OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DEST]

对应于以上六种命令格式,rsync有六种不同的工作模式:

1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src

3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data

4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av [email protected]::www /databack

5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack [email protected]::www

6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www

选项:

-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

-c, --checksum 打开校验开关,强制对文件传输进行校验

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, --recursive 对子目录以递归模式处理

-R, --relative使用相对路径信息

-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

--backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀

-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

-l, --links保留软链结

-L, --copy-links 想对待常规文件一样处理软链结

--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

--safe-links 忽略指向SRC路径目录树以外的链结

-H, --hard-links 保留硬链结

-p, --perms 保持文件权限

-o, --owner 保持文件属主信息

-g, --group 保持文件属组信息

-D, --devices 保持设备文件信息

-t, --times 保持文件时间信息

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间

-n, --dry-run现实哪些文件将被传输

-W, --whole-file 拷贝文件,不进行增量检测

-x, --one-file-system 不要跨越文件系统边界

-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节

-e, --rsh=COMMAND指定使用rsh、ssh方式进行数据同步

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

--delete 删除那些DEST中SRC没有的文件

--delete-excluded 同样删除接收端那些被该选项指定排除的文件

--delete-after 传输结束以后再删除

--ignore-errors 及时出现IO错误也进行删除

--max-delete=NUM 最多删除NUM个文件

--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输

--force 强制删除目录,即使不为空

--numeric-ids 不将数字的用户和组ID匹配为用户名和组名

--timeout=TIME IP超时时间,单位为秒

-I, --ignore-times 不跳过那些有同样的时间和长度的文件

--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

-T --temp-dir=DIR 在DIR中创建临时文件

--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

-P 等同于 --partial

--progress 显示备份过程

-z, --compress 对备份的文件在传输时进行压缩处理

--exclude=PATTERN 指定排除不需要传输的文件模式

--include=PATTERN 指定不排除而需要传输的文件模式

--exclude-from=FILE 排除FILE中指定模式的文件

--include-from=FILE 不排除FILE指定模式匹配的文件

--version 打印版本信息

--address 绑定到特定的地址

--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件

--port=PORT 指定其他的rsync服务端口

--blocking-io 对远程shell使用阻塞IO

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

--progress 在传输时现实传输过程

--log-format=formAT 指定日志文件格式

--password-file=FILE 从FILE中得到密码

--bwlimit=KBPS 限制I/O带宽,KBytes per second

-h, --help 显示帮助信息

实例:

将本机当前目录下的以.c结尾的文件复制至foo主机的src目录下:

[[email protected] ~]# rsync -t *.c foo:src/

从foo主机上以递归方式将src/bar目录复制至本机/data/tmp目录:

[[email protected] ~]# rsync -avz foo:src/bar /data/tmp

从foo主机上以递归方式将src/bar目录下的所有内容复制至本机/data/tmp目录,但在/data/tmp目录下不会创建bar目录:

[[email protected] ~]# rsync -avz foo:src/bar/ /data/tmp

将本机/src/foo目录复制至/dest目录:

[[email protected] ~]# rsync -avz /src/foo /dest

使用tom账户连接远程192.168.0.254主机的rsync进程,将common模块定义的path路径下载至本地test3目录:

[[email protected] ~]# rsync -avz [email protected]::common /test3

匿名下载192.168.0.254服务器的common模块至本地dest目录:

[[email protected] ~]# rsync -avz 192.168.0.254::common /dest

显示192.168.0.254服务器所有的模块名称,需要服务器端配置list=true才会显示:

[[email protected] ~]# rsync --list-only [email protected]::

创建密码文件rsync.pass,在该文件中仅包含密码,最后使用rsync命令的--password-file参数指定密码文件,就可以省去每次输入密码的烦恼:

[[email protected] ~]# echo "pass" > rsync.pass

[[email protected] ~]# rsync -avz --delete --password-file=rsync.pass [email protected]::common /dest

如果客户端需要定期对rsync服务器的数据进行备份,可以编写shell脚本,通过计划任务实现数据的定期备份工作。

[[email protected] ~]# vim rsync_bak.sh
#!/bin/bash
#This script does backup through rsync.
#Date:2014-10-08
#Version:1.0 beta
#
export PATH=/bin:/usr/bin:/usr/local/bin
SRC=common
DEST=/data
Server=192.168.0.254
User=tom
#password file must bot be other-accessible.
Passfile=/root/rsync.pass
#If the DEST directory not found, then create one.
[ ! -d $DEST ] && mkdir $DEST
[ ! -e $Passfile ] && exit 2
rsync -az --delete --password-file=$Passfile ${User}@${Server}::$SRC $DEST/$(date +%Y%m%d)
时间: 2024-11-03 01:30:14

4.6.2 Rsync文件同步的相关文章

Rsync 文件同步(windows下安装部署)

更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) Rsync windows版本安装包:(这里下载的是4.0.5)下载地址:http://www.pc6.com/softview/SoftView_108644.htmlRsync 软件包括 server 端 和 client 端rsync 软件的安装:默认端口:873因为是windows版的图形化安装,这里就不演示. 只要记住服务端装server版.客户端装 client 版Server 端的配置如下:    

rsync -文件同步工具

ubuntu 12.10 x32 $ sudo apt-get install rsync $ sudo apt-get install grsync # 图形化前端 Mac OS X $ curl -O http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz # 下载源代码 $ curl -O http://rsync.samba.org/ftp/rsync/rsync-patches-3.0.9.tar.gz # 下载补丁 $ tar -xzv

linux系统中Rsync文件同步方案

linux服务器下Rsync文件同步配置 Rsync(remote synchronize) 远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件.Rsync的好处是只同步两个文件不同的部分,相同的部分不在传递.类似于增量备份,这使的在服务器传递备份文件或者同步文件. crontab配合rsync 使用可达到定时备份同步任务. Rsync部署环境1.服务器准备| Host | IP | ----------|| Server | 192.168.60.110 | -

Rsync文件同步

本章结构 关于rsync 1.一款增量备份工具,remote sync,远程同步,支持本地复制或者与其他SSH.rsync主机同步,官方网站:http://rsync.samba.org/. Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用rsync同步本地硬盘中的不同目录. Rsync是用户取代rcp的一个工具,Rsync使用所谓的"Rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传

rsync 文件同步 服务器和客户端配置

rsync 配置: #解压:tar zxvf rsync-3.1.1.tar.gzcd rsync-3.1.1#编译安装./configure --prefix=/usr/local/rsyncmake make install #################服务端: vi /etc/xinetd.d/rsync         将其中改成:  disable = no #随系统启动RSYNCchkconfig rsync on #配置/etc/rsyncd.conf(需要手动生成,不加注释

CentOS系统rsync文件同步 安装配置

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬链接等等. 无须特殊权限即可安装. 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 安全:可以使用scp.ssh等方式来传输文件,当然也可以通过直接的socket连接. 支持匿名传输,以方

rsync文件同步、Inotify-tools参数详解

inotifywait用于等待文件或文件集上的一个待定事件,可以监控任何文件和目录设置,并且可以递归地监控整个目录树: inotifywatch用于收集被监控的文件系统计数据,包括每个inotify事件发生多少次等信息 从上面可知inotifywait是一个监控事件,可以配合shell脚本使用它.与它相关的参数: 语法格式:inotifywait [-hcmrq][-e][-t][--format][-timefmt][...] -m: 即“--monitor”   表示始终保持事件监听状态.

Rsync文件同步服务

Rsync简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具,适用于Unix/Linux/Windows等多种操作系统. Rsync的特性 支持拷贝特殊文件如链接.设备文件 支持增量同步,传输效率较高 支持使用rcp,rsh,ssh作为隧道进行传输 支持使用守护进程的方式进行传输 支持匿名或认证的方式进行传输 支持保留文件属性不改变,支持排除指定文件 Rsync数据备份架构 Rsync常用参数 -v 显示过程 -z 压缩方式传输 -a 归档模式,等

Centos6.5下rsync文件同步安装及配置当中遇到的问题及解决方法

实验节点如下: 源节点:192.168.0.111 备份节点:192.168.0.112 ------------------------------以下部分在两个节点上执行1.防火墙开放873端口(两个节点)#  /sbin/iptables -I INPUT -p tcp --dport 873 -j ACCEPT#  /etc/rc.d/init.d/iptables save#  service iptables restart 2.关闭selinux(两个节点)#  vi /etc/s