rsync介绍
老套的搬用一下rsync的介绍,rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
一、安装Rsync。
如果支持yum安装,直接使用:
|
1
|
yum install xinetd |
如果是源码安装则到官方http://rsync.samba.org/下载source包即可,安装过程大致如下:
|
1
2
3
4
5
6
7
|
tar zxvf *cd *./configuremakemake install#如果是已安装了RPM版的Rsync,并且要安装新版的Rsync,需要先删除Rsync#rpm -e rsync |
Redhat会有一个包依赖rsync,可以使用rpm -e rsync –nodeps卸载。另外,RPM版的rsync带了一个服务端的启动脚本,/etc/xinetd.d/rsync可以保留,但是需要注意的是必须在主服务器和同步服务器上都安装rsync,其中主服务器上是以服务器模式运行rsync,而同步上则以客户端方式运行rsync。这样在主服务器上运行rsyn守护进程,在同步上用crond定时运行客户程序来同步主服务器上需要同步的内容。
二、配置rsync服务器端
rsync服务器的配置文件为/etc/rsyncd.conf,其控制认证、访问、日志记录等等。该文件是由一个或多个模块结构组成。一个模块定义以方括弧中的模块名开始,直到下一个模块定义开始或者文件结束,模块中包含格式为name=value的参数定义。每个模块其实就对应需要备份的一个目录树,比方说在我们的实例环境中,有三个目录树需要备份:/www/和/mirror/file0/和/mirror/file1/目录,那么就需要在配置文件中定义三个模块,分别对应三个目录树。配置文件是行为单位的,也就是每个新行都表示一个新的注释、模块定义或者参数赋值。
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
# default: off# description: The rsync server is a good addition to an ftp server, as it \# allows crc checksumming etc.service rsync{ disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID} |
将disable 改为no,另外将配置成随系统启动:
|
1
|
chkconfig rsync on |
重新启动:
|
1
2
3
|
service xinetd restart #重新加载配置/etc/rc.d/init.d/xinetd reload |
查看进程是否在监听:
|
1
2
3
|
netstat -a | grep rsync#或者lsof -i :873 |
配置rsync账户相关:
|
1
2
3
4
5
6
7
|
#配置rsync密码文件,(名字随便写,只要和配置文件里的一致即可),格式(一行一个用户) :vim /home/rsync.pshkshadow:hkshadow#配置rsync密码文件权限chown root.root rsync.ps#注意:该文件只能是root用户可读写的,注意,出于安全目的,这个文件的属性必需是只有属主可读,否则rsync将拒绝运行。chmod 600 rsync.ps |
创建配置文件:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
uid = nobody # 备份以什么身份进行,用户ID gid = nobody # 备份以什么身份进行,组ID ,注意这个用户ID和组ID,如果要方便的话,可以设置成root,这样rsync几乎就可以读取任何文件和目录了,但是也带来安全隐患。建议设置成只能读取你要备份的目录和文件即可。use chroot = no max connections = 0 #最大连接数,0代表没有限制 #port = 873 #默认端口873 pid file = /var/log/rsync/rsyncd.pid #运行进程的ID写到哪里#lock file = /var/log/rsync/rsync.locklog file = /var/log/rsync/rsyncd.log #日志记录文件motd file = /var/log/rsync/rsyncd.motd #欢迎消息strict modes =yes #是否检查口令文件的权限[txt] # 指定认证的备份模块名 path = /www/htdocs/pub/test/ # 需要备份的目录comment = BACKUP attachment # 注释 ignore errors # 忽略一些无关的IO错误 read only = false # 设置为非只读,即可以传至服务器的相应目录。list = false # 不允许列文件 exclude = test/ test.php #设置不同步的目录或文件用空格隔开hosts allow = 210.51.0.80 #允许连接服务器的主机IP地址,如果多个ip则用空格隔开hosts deny = 0.0.0.0/0.0.0.0 #禁止连接服务器的主机IP地址,也可为*,表示所有。auth users = msyn # 认证的用户名,如果没有这行,则表明是匿名secrets file = /home/rsync.ps # 认证文件名,用来存放密码 |
三、配置客户端(省略)
配置密码文件 (注:为了安全,设定密码档案的属性为:600。rsync.scrt的密码一定要和Rsync Server 密码设定案里的密码一样)
下一步是一个运行rsync的例子:
|
1
|
rsync -vzrltogp --progress --delete user@x.x.x.168::attachment /usr/local/apache/htdocs/pub/html/ --password-file=/home/rsync.ps |
上面这个命令行中-vzrtopg代表的意思是:
-v表示verbose(详细)
-z表示zip(压缩)
-r表示recursive(递归目录)
-topg是保持文件原有属性如o=owner(属主)、t=times(时间)、p=perms(权限)、g=group(组)的参数 -H表示保持硬连接
-l:保留软链结 -u:表示只更新源文件比目标时间新的文件
–progress是指显示出详细的进度情况
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。 user@x.x.x.168::attachment 是表示对服务器x.x.x.168中的attachment模块进行备份,登录帐号是user
–password-file = /etc/rsync.scrt来指定密码文件,这里需要注意的是这份密码文件权限属性要设得只 有属主可读(权限为600),属主为正在运行此命令的用户。
-a:(-a, –archive equivalent to -rlptgoD)以archive模式操作,复制目录、符号连接在这里面
==========================================================================
另外,可以创建一个脚本运行这个命令,并记录日志:
|
1
2
3
4
|
# cat /usr/local/bin/rsync.sh #!/bin/bash DATE=`date +%w` rsync -avzH --progress --delete inburst@192.168.168.52::inburst /home/quack/backup/$DATE --password-file=/etc/rsync.pass > /var/log/rsync.$DATE |
修改/etc/crontab做好定时更新(配置文件 /etc/crontab)
|
01
02
03
04
05
06
07
08
09
10
11
|
crontab -e 15 4 * * 6 root rsync.sh crontab -l //查看所有自定义任务/etc/init.d/crond restart //重启动任务计划#crontab Crontab文件的格式:#第1列分钟1~59 #第2列小时1~23(0表示子夜)#第3列日1~31 #第4列月1~12 #第5列星期0~6(0表示星期天) |
扩展阅读:
关于 rsync 中: 和 :: 及 rysnc 和 ssh 认证协议的区别
(1)双冒号 “::”的用法:
rsync 传输文件前需要登录认证,那么这个过程用到的协议有两种:ssh 和 rsync
何时用ssh 协议呢?
我们平时用的 rsync -av /SRC root@192.168.99.36:/DEST 就是默认用的 ssh 协议
这种方式默认是省略了 -e ssh 的,与下面等价:
|
1
|
rsync -av /SRC -e ssh root@192.168.99.36:/DEST |
当遇到要修改端口的时候,我们可以:
|
1
|
rsync -av /SRC -e "ssh -p36000" root@192.168.99.36:/DEST |
何时用rysnc协议呢?
|
1
|
rsync -av /SRC rsync://root@192.168.99.36:36000/modual/DestPath |
注意:这条语句显示的指明了使用rsync认证协议,port后的modual是rsync服务端配置文件rsyncd.conf
里面配置的模块名,模块里面会包含一些用户名、密码、路径等认证信息。
使用rsync认证,还有一种写法:
1
rsync -av /SRC –port=36000 root@172.17.256.211::modual/DestPath
注意:这种写法不需显示指定 rsync 协议,而是根据 :: 来识别的,端口自己用 –port 指定。
而且这里 modual 前面没有 / 的。
总结: 双冒号:: 是用在 rsync 协议里面的,: 一般用在ssh协议里面,这两种用法各有千秋:
rsync协议你需要在rsync服务端配置模块,这增加了运维工作量,但是安全,因为不需要对客户公开帐号密码。
ssh协议方便,不需配置,拿到帐号密码即可开工,但是对客户是暴露的,有安全风险。
还需要注意的是用rsync协议认证的时候,后面跟的是模块名,而不是路径,这点要注意。
(2)关于 rsync –port 的man文档如下:
rsync 客户端 –port
–port=PORT
This specifies an alternate TCP port number to use rather than
the default of 873. This is only needed if you are using the
double-colon (::) syntax to connect with an rsync daemon (since
the URL syntax has a way to specify the port as a part of the
URL).
rsync 服务端 –port
–port=PORT
This specifies an alternate TCP port number for the daemon to
listen on rather than the default of 873. See also the “port”
global option in the rsyncd.conf manpage.
(3)附一些参考文档:
rsync实例用法及参数详解
http://hi.baidu.com/leejun_2005/item/672c31d4c12a8b1b20e25041
rsync命令用法入门
http://hi.baidu.com/leejun_2005/item/a04d17c4cf24547088ad9e7c
rsync 的核心算法
http://hi.baidu.com/leejun_2005/item/11651fc379229f52bdef69b7
rsync介绍的更多相关文章
- linux rsync介绍(八)
[教程主题]:rsync [1] rsync介绍 Rsync(Remote Synchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算 ...
- rsync 介绍和参数说明
Rsync 介绍: 我们经常需要在不同目录或者服务器之间做文件同步和更新,Linux提供了很多内置命令可以使用比如scp等等,但是今天我们介绍一个更加强大的工具rsync.rsync 命令是一个远程同 ...
- Linux Rsync备份服务介绍及部署守护进程模式
rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份工具 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输 ...
- Linux之rsync同步工具介绍+inotify同步
1.rsync介绍 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作平台. rsync, ...
- Linux Rsync
一.Rsync介绍 1.什么是Rsync Rsync 即Remote Rynchronization,是一款开源的.快速的.多功能的.可实现全量或增量的本地或者远程数据镜像同步复制.备份的优秀工具. ...
- rsync同步工具学习笔记
rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于unix/linux/windows等多种操作 ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
- 如何使用RSYNC搭建备份服务器
1. RSYNC介绍 RSYNC是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 远程数 ...
- linux运维、架构之路-rsync
1 .rsync介绍 rsync是实现全量及增量的本地或远程数据镜像同步备份的工具 rsync常用命令参数 命令参数 参数说明 -a (--archive) 归档模式,表示以递归方式传输文件,并保持所 ...
随机推荐
- C# 日期减法
public class DateExample { public static void Main() { DateTime dt1 = new DateTime(2012, 7, 16); Dat ...
- 判断DataReader中是否有指定列
取出的DataReader如果在读取过程中报没有列的错误可以用这个方法. //调用该方法判断datareader中是否有指定列 public static bool readerExists(IDat ...
- 【知识分享】UIButton setTitle 设置为空 失效
今天开发练习超级猜图,但是碰到了一个奇怪的问题 困扰我一个晚上,低效的夜晚 可恨~ 示例说明1 [button setTitle:@"" forState:UIControlSta ...
- 【wenqi】重置Centos 7 Root密码
重置Centos 7 Root密码的方式和Centos 6完全不同.下面展示一下到底如何操作. 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux ...
- UVALive 6811 Irrigation Line(二分图最小点覆盖--匈牙利算法)
题意:求最少的线可以覆盖一个由0.1两种数字组成的图中所有的1. eg: 只需要两条线即可. 分析: 1.先为上述例子的行列标号 2.若图中数字为1,则代表该数字所在的行与列有关联. 例如第r1行第c ...
- Linux SCSI回调IO的分析
本文转载自:http://blog.csdn.net/xushiyan/article/details/6941640,如需参考,请访问原始链接地址. 没找到如何转载的入口,只好全文copy了. -- ...
- qml去标题栏
只要加入"flags: Qt.Window | Qt.FramelessWindowHint "属性就可实现去标题栏. 注意:在使用这个属性的时候要先导入QtQuick.Windo ...
- C#对象转JSON字符串和JSON字符串转对象
namespace Net.String.ConsoleApplication { using System; using System.Data; using System.Collections; ...
- 解决ionic在ios无法使用focus,ios focus失效的问题
最近也偷懒,很久没有写博客了.今天在项目中遇到了这个奇葩的问题,基于ionic的ios的hybird APP 无法使用focus()获取焦点和键盘的问题. 问题:基于ionic的ios的hybird ...
- Get vertical scrollbar width and example
$.scrollbarWidth = function () { var parent, child, width; if (width === undefined) { parent = $('&l ...