cszer

rsync简明教程

分类: 技术, Linux 运维   标签:    评论: 2   阅读:3,644 views

简介:
一个跨平台的资料备份与同步工具

原理:
在进行同步之前,会先比较分析两端的数据,找出数据发生改变过多文件,再将这些文件传输到目的端,完成备份工作

优点:
1、可以进行增量备份,即使备份中断,下次备份会从从上次中断的位置继续
2、可以利用ssh进行数据加密传输
3、开源、跨平台

缺点:
1、遇到文件数或目录层数多的时候,效率较差。文件数到达一定数量时,rsync可能无法执行
2、操作时务必小心,否则容易覆盖或误删除数据

运行模式:
1、在本机上运行,用法与cp几乎一模一样:

rsync -av /etc /tmp(将/etc目录备份到/tmp/etc目录里)

2、通过ssh通道在传输数据:

rsync -av -e ssh [email protected]:/etc /tmp(将192.168.1.1上的/etc目录备份到本机的/tmp目录)
rsync -av -e ssh [email protected]:/etc/ /tmp(将192.168.1.1上的/etc目录下的文件备份到本机的/tmp目录)

3、使用daemon的方式对数据进行备份传输,此时rsync服务端需启用873端口

环境:
server: 192.168.1.101
client: 192.168.1.104

说明:
将server上的/var/log里的文件同步到client的/tmp/log目录

服务端配置:
首先创建一个配置文件/etc/rsyncd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[[email protected] ~]# vim /etc/rsyncd.conf
uid = root     #设置执行rsync的本地用户
gid = root     #设置执行rsync的本地组
#use chroot = yes     #是否chroot
max connections = 4     #最大同时连接数
pid file = /var/run/rsyncd.pid     #指定rsync服务进程的pid file
lock file = /var/run/rsync.lock     #指定rsync服务端锁定文件log file = /var/log/rsyncd.log     #指定rsync的log输出路径
[downloads]     #模块设定,可设置多个模块
path = /var/log     #同步文件的真实路径
ignore errors
read only = true     #是否只读
list = true
hosts allow = 192.168.1.0/24     #允许同步到ip/网段
hosts deny = 0.0.0.0/32
auth users = backup     #身份验证用户。这不是系统用户,而是rsync服务自定的
secrets file = /etc/rsyncd.pwd     #downloads模块的密码文件

创建密码文件/etc/rsyncd.pwd

[[email protected] ~]# vim /etc/rsyncd.pwd
backup:jjj     #用户backup,密码jjj
[[email protected] ~]# chmod 600 /etc/rsyncd.pwd     #出于安全考虑,文件只有属组可读写
[[email protected] ~]# rsync --daemon     #以守护进程模式启动rsync服务,“--config=”参数可以指定配置文件,默认是/etc/rsyncd.pwd
[[email protected] ~]# netstat -tunlp |grep 873     #检查是否正常启动

客户端配置:

[[email protected] ~]# vim /etc/rsync.pwd     #创建密码文件
jjj
[[email protected] ~]# chmod 600 /etc/rsync.pwd     #修改密码文件权限

开始同步:

[[email protected] ~]# rsync -avzP --password-file=/etc/rsync.pwd [email protected]::downloads/* /tmp/log
avzP     #z是压缩 P是显示传输进度
--password-file     #指定密码文件,如不指定,会在shell中提示手工输入
[email protected]::downloads/*     #源文件,downloads是模块名
/tmp/log     #目标文件

也可从客户端同步到服务端,服务端配置文件的read only必须改为false。

下面是rsync的部分语法说明:

[[email protected] ~]# rsync [-avrlptgoD] [-e ssh] [[email protected]:/dir] [/local/path]
参数:
-v :观察模式,可以列出更多的信息;
-q :与 -v  相反,安静模式,输出的信息比较少;
-r :递归复制!可以针对『目录』来处理!很重要!
-u :仅更新 (update),不会覆盖目标的新档案;
-l :复制连结文件的属性,而非连结的目标源文件内容;
-p :复制时,连同属性 (permission) 也保存不变!
-g :保存源文件的拥有群组;
-o :保存源文件的拥有人;
-D :保存源文件的装置属性 (device)
-t :保存源文件的时间参数;
-I :忽略更新时间 (mtime) 的属性,档案比对上会比较快速;
-z :加上压缩的参数!
-e :使用的信道协议,例如使用 ssh 通道,则 -e ssh
-a :相当于 -rlptgoD ,所以这个 -a 是最常用的参数了!

除非注明,文章皆由( csz )原创,转载请标明本文地址
本文地址: http://www.cszhi.com/20120312/rsync-simple.html

03-12
2012

发表评论