Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109084
  • 博文数量: 55
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-13 10:59
文章分类
文章存档

2011年(1)

2009年(37)

2008年(17)

我的朋友

分类: LINUX

2009-02-23 15:21:27

Google 一下,你可以搜到很多关于 rsync的文章,所以今天我也来凑个份,不多说,我先来几个小例子,再来长篇大论。呵呵,接招。

[root@max max]# pwd
/tmp/max
[root@max max]# cat /etc/rsyncd.conf
uid=nobody //当该模块传输文件时守护进程应该具有的uid
gid=nobody //指定当该模块传输文件时守护进程应该具有的gid。默认值为"nobody"
use chroot=no  //如 果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺 点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
max connections =5 //该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

[max]
path=/home/max/awkhomework/
ignore errors
read only = yes  //否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。

[haproxy]
path=/home/max/max/
ignore errors
read only =yes
auth users = can //指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file = /etc/can.pas  //指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的 secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器。

[can]
path=/tmp/max/
[root@max max]#chmod  777 /tmp/max

之后我再给出更多的参数。(一定要注意权限问题哦,不然……呵呵)
我的的OS是Asianux 3.0  ,直接   执行  rsync --daemon 就OK了,没有修改 /etc/xinetd.d/rsync 里的 disable 参数 哦。

[root@max can]# rsync --progress -rvztopg 192.168.228.215::max ./
receiving file list ...
17 files to consider
./
1.awk
          91 100%   88.87kB/s    0:00:00 (xfer#1, to-check=15/17)
10.awk
         176 100%  171.88kB/s    0:00:00 (xfer#2, to-check=14/17)
11.awk
          46 100%   44.92kB/s    0:00:00 (xfer#3, to-check=13/17)
12.awk
          56 100%   54.69kB/s    0:00:00 (xfer#4, to-check=12/17)
13.awk
          49 100%   47.85kB/s    0:00:00 (xfer#5, to-check=11/17)
14.awk
          60 100%   58.59kB/s    0:00:00 (xfer#6, to-check=10/17)
15.awk
          63 100%   61.52kB/s    0:00:00 (xfer#7, to-check=9/17)
16.awk
          70 100%   68.36kB/s    0:00:00 (xfer#8, to-check=8/17)
2.awk
         125 100%  122.07kB/s    0:00:00 (xfer#9, to-check=7/17)
3.awk
          49 100%   47.85kB/s    0:00:00 (xfer#10, to-check=6/17)
4.awk
          51 100%   24.90kB/s    0:00:00 (xfer#11, to-check=5/17)
5.awk
          49 100%   23.93kB/s    0:00:00 (xfer#12, to-check=4/17)
6.awk
          53 100%   25.88kB/s    0:00:00 (xfer#13, to-check=3/17)
7.awk
          33 100%   10.74kB/s    0:00:00 (xfer#14, to-check=2/17)
8.awk
          82 100%   26.69kB/s    0:00:00 (xfer#15, to-check=1/17)
9.awk
         120 100%   39.06kB/s    0:00:00 (xfer#16, to-check=0/17)

sent 424 bytes  received 1954 bytes  4756.00 bytes/sec
total size is 1173  speedup is 0.49
[root@max can]#


来点加密功能
[root@max can]# rsync --progress  -rvztopg can@192.168.228.215::haproxy/alreadyback ./
Password:
receiving file list ...
96 files to consider
alreadyback/
alreadyback/LVS
         673 100%   43.82kB/s    0:00:00 (xfer#1, to-check=94/96)
alreadyback/SAN
        1102 100%   71.74kB/s    0:00:00 (xfer#2, to-check=93/96)
alreadyback/apachejosstomcat的集成.tar.bz2
        2459 100%  160.09kB/s    0:00:00 (xfer#3, to-check=92/96)
alreadyback/autorunyourscripts
         515 100%   31.43kB/s    0:00:00 (xfer#4, to-check=91/96)
alreadyback/banbenkongzixitong.tar.bz2
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(260) [generator=2.6.8]
rsync error: received SIGUSR1 (code 19) at main.c(1095) [receiver=2.6.8]
[root@max can]#


看到后面error 了吗,没有关系,是我按下 Ctrl+C 出现的,不要误会。

接下来上传
[root@max can]# rsync  --progress -rvztopg /tmp/can/ 192.168.228.215::can
building file list ...
38 files to consider
./
rsync: failed to set times on "/." (in can): Operation not permitted (1)
1.awk
          91 100%    0.00kB/s    0:00:00 (xfer#1, to-check=36/38)
10.awk
         176 100%   85.94kB/s    0:00:00 (xfer#2, to-check=35/38)
11.awk
          46 100%   22.46kB/s    0:00:00 (xfer#3, to-check=34/38)
12.awk
          56 100%   18.23kB/s    0:00:00 (xfer#4, to-check=33/38)
13.awk
          49 100%   15.95kB/s    0:00:00 (xfer#5, to-check=32/38)
14.awk
          60 100%   14.65kB/s    0:00:00 (xfer#6, to-check=31/38)
15.awk
          63 100%   15.38kB/s    0:00:00 (xfer#7, to-check=30/38)
16.awk
          70 100%   17.09kB/s    0:00:00 (xfer#8, to-check=29/38)
2.awk
         125 100%   30.52kB/s    0:00:00 (xfer#9, to-check=28/38)
3.awk
          49 100%    9.57kB/s    0:00:00 (xfer#10, to-check=27/38)
4.awk
          51 100%    3.32kB/s    0:00:00 (xfer#11, to-check=26/38)
5.awk
          49 100%    2.81kB/s    0:00:00 (xfer#12, to-check=25/38)
6.awk
          53 100%    3.04kB/s    0:00:00 (xfer#13, to-check=24/38)
7.awk
          33 100%    1.90kB/s    0:00:00 (xfer#14, to-check=23/38)
8.awk
          82 100%    4.45kB/s    0:00:00 (xfer#15, to-check=22/38)
9.awk
         120 100%    6.51kB/s    0:00:00 (xfer#16, to-check=21/38)
alreadyback/
 这些是最基本的功能。还有
--delete  指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

 还可以结合ssh 使用。等 等

以下内容摘到网络,结省大家的搜索时间:

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

  rsync [OPTION]... SRC DEST

  rsync [OPTION]... SRC [USER@]HOST:DEST

  rsync [OPTION]... [USER@]HOST:SRC DEST

  rsync [OPTION]... [USER@]HOST::SRC DEST

  rsync [OPTION]... SRC [USER@]HOST::DEST

  rsync [OPTION]... rsync://[USER@]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 /databack

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

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


创建配置文件
默认安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为“/etc/rsyncd.conf”,以下是一些参数。可以参考(同样来自于网络),当然有时候并不可能用得到。RSYNC主要用于对网站等的备份结合  cron 可以完成一些自动 备份的工作。


在文件中[module]之前的所有参数都是全局参数,当然也可以在全局参数部分定义模块参数,这时候该参数的值就是所有模块的默认值。

port

指定后台程序使用的端口号,默认为873。

motd file

"motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。

log file

"log file"指定rsync的日志文件,而不将日志发送给syslog。比如可指定为“/var/log/rsyncd.log”。

pid file

指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”。

syslog facility

指 定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。

二、模块参数
主要是定义服务器哪个目录要被同步。其格式必须为“[module]”形式,这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:

comment

给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。

path

指定该模块的供备份的目录树路径,该参数是必须指定的。

list

该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。


exclude

用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。

exclude from

指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。

include

用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

include from

指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

strict modes

该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。

hosts allow

该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:

单个IP地址,例如:192.167.0.1

整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0

多个IP或网段需要用空格隔开,“*”则表示所有,默认是允许所有主机连接。

hosts deny

指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

ignore errors

指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。

ignore nonreadable

指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。

lock file

指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。

transfer logging

使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。

log format

通过该选项用户在使用transfer logging可以自己定制日志文件的字段。其格式是一个包含格式定义符的字符串,可以使用的格式定义符如下所示:

%h 远程主机名        %a 远程IP地址        %l 文件长度字符数        %p 该次rsync会话的进程id        %o 操作类型:"send"或"recv"

%f 文件名            %P 模块路径        %m 模块名            %t 当前时间                %u 认证的用户名(匿名时是null)

%b 实际传输的字节数            %c 当发送文件时,该字段记录该文件的校验码

默认log格式为:"%o %h [%a] %m (%u) %f %l",一般来说,在每行的头上会添加"%t [%p] "。在源代码中同时发布有一个叫rsyncstats的perl脚本程序来统计这种格式的日志文件。

timeout

通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

refuse options

通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:"dont compress = *"。












阅读(1054) | 评论(0) | 转发(0) |
0

上一篇:dump restore 一 对

下一篇:AX3.0+HA+LVS

给主人留下些什么吧!~~