rsync server 搭建

rsync 搭建:
part 1:基本环境
OS:  ubutnu 10.10
server: 172.16.2.84
client: 172.16.2.142

part 2: server 端相关操作
1 install: 
ubuntu 从 10.04 开始就默认安装 rsync。 rsync 服务时默认不启动的,如果想要开启启动,可以修改:
$sudo vim  /etc/default/rsync
RSYNC_ENABLE=true   #false改true


2 修改配置文件:

# 对于大多数默认安装的,默认开启不启动的文件都会保存在 /usr/share 中。 如果让其开启启动,可以拷贝到 /etc  目录下
$sudo cp /usr/share/doc/rsync/examples/rsyncd.conf   /etc

我们先来查看一下这个文件(知道为什一定要使用cat 吗? cat 是以只读文件形式打开)
$sudo cat /etc/rsyncd.conf

# 文件显示如下:

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd    # 显示登录之后的欢迎信息,如果愿意,可以自己修改 /etc/motd 目录下的东西
#log file=/var/log/rsyncd   #指定日志文件的存放路径。此时日志就默认保存在rsyncd 文件中
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# pid file=/var/run/rsyncd.pid


# 指定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。 (应该明白,系统有一个自己的日志系统, syslog)
#syslog facility=daemon


# 自定义tcp选项,默认是关闭的
#socket options=


# 以下是模块信息, 我们可以创建多个模块
# MODULE OPTIONS
[ftp]
    comment = public archive     # 模块描述
    path = /var/www/pub      # 在rsync 服务器上,指定需要同步的路径
    use chroot = yes    #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
#   max connections=10   # 最大的连接数
    lock file = /var/lock/rsyncd   # 指定支持 max connections 参数时的锁文件
# the default for read only is yes...
    read only = yes   # 只读选项
    list = yes   #客户请求时可用模块时是否列出该模块
    uid = nobody  #设定该模块传输文件时守护进程应该具有的uid 
    gid = nogroup     #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限
#   exclude =     #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include    #这个我的理解是排除目录中不需同步的文件,是的
#   exclude from =   #可以指定一个包含exclude模式定义的文件名,(不是太理解)
#   include =    #与exclude相似
#   include from =      #可以指定一个包含include模式定义的文件名
#   auth users =    #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)  默认情况下是不需要用户名和密码的
#   secrets file = /etc/rsyncd.secrets  #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
    strict modes = yes   #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为yes
#   hosts allow =    #允许的主机. 如果不写, 表示任何主机都可以访问
#   hosts deny =    #拒绝访问的主机. 
    ignore errors = no      #设定rsync服务器在运行delete操作时是否忽略I/O错误 
    ignore nonreadable = yes   #设定rysnc服务器忽略那些没有访问文件权限的用户
    transfer logging = no  #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
#   log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.      #设定日志格式
    timeout = 600   # 设置超时时间
    refuse options = checksum dry-run  #定义一些不允许客户对该模块使用的命令选项列表, 即这个命令不可用
    dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz   #告诉rysnc哪些文件在传输前不用压缩,默认已设定压缩包不再进行压缩

日志格式选项列表:
%h:远程主机名
%a:远程IP地址
%l:文件长度字符数
%p:该次rsync会话的进程id
%o:操作类型:"send"或"recv"、”del.”
%f:文件名
%P:模块路径
%m:模块名
%t:当前时间
%u:认证的用户名(匿名时是null)
%b:实际传输的字节数
%c:当发送文件时,该字段记录该文件的校验码

下面我们自己来定义自己的conf 文件: (一般来说,系统默认给出的配置文件都比较全,在具体的项目实践中,一般是越简单越好,把一些不需要的的东西去掉)

log file=/var/log/rsyncd

pid file=/var/run/rsyncd.pid

syslog facility=daemon


[rsync_bk]
  comment = public archive
  path = /home/rsync_bk
  use chroot = no
  lock file = /var/lock/rsyncd
  read only = yes
  list = yes
  uid = nobody
  gid = nogroup
  auth users = rsync
  secrets file = /etc/rsyncd.secrets
  strict modes = yes
  hosts allow = 172.16.2.142
  ignore errors = yes
  ignore nonreadable = yes
  transfer logging = yes
  log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
  timeout = 600
  refuse options = checksum dry-run
  dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

创建一个密码文件,并写入username:password:
$sudo vi /etc/rsyncd.secrets
rsync:123

修改权限: 600 分别表示user, group, others 的rwz权限, 首位的 0 好像是特权位, 
$sudo chmod 0600 /etc/rsyncd.secrets    

启动rsync
sudo /etc/init.d/rsync start


# client 同步之后一个, 从 /var/log/rsyncd 截取的一个日志片断:

2011/08/31 11:38:52 [11083] sent 200 bytes  received 82 bytes  total size 25
2011/08/31 11:39:27 [11556] name lookup failed for 172.16.2.142: Name or service not known
2011/08/31 11:39:27 [11556] connect from UNKNOWN (172.16.2.142)
2011/08/31 11:39:31 [11556] auth failed on module rsync_bk from unknown (172.16.2.142): password mismatch
2011/08/31 11:39:47 [11799] name lookup failed for 172.16.2.142: Name or service not known
2011/08/31 11:39:47 [11799] connect from UNKNOWN (172.16.2.142)
2011/08/31 11:39:50 [11799] rsync on rsync_bk/ from rsync@unknown (172.16.2.142)
2011/08/31 11:39:50 [11799] building file list

part 3: clinet 端相关操作:
一般客户端不需要进行特殊的配置,直接同步即可
在服务器上建立 a.py, b,py c.py ,  在client 端执行  "rsync -vzrtopg --progress rsync@172.16.2.84::rsync_bk   . "就可以同步到 当前目录,当然也可以建立一个目录, rsync

jia@jia:~$ rsync -vzrtopg --progress rsync@172.16.2.84::rsync_bk   rsync
Password:
receiving incremental file list
./
a.py
          25 100%   24.41kB/s    0:00:00 (xfer#1, to-check=2/4)
b.py
           6 100%    5.86kB/s    0:00:00 (xfer#2, to-check=1/4)
c.py
           4 100%    0.11kB/s    0:00:00 (xfer#3, to-check=0/4)
sent 119 bytes  received 312 bytes  172.40 bytes/sec
total size is 35  speedup is 0.08

我们把这个同步工作交给crontab去执行。首先我们要创建一个密码文件
$sudo vi /etc/rsync.pwd输入123,保存     #这里指定使用的密码文件中只需要有密码,不要有用户名。并且密码要一致,

!注意:下面这两步操作是必须的,没有足够权限同步就会不成功,ls -l 你所指向的目录 可以查看.pwd 文件的属性和属主
sudo chmod 0600 /etc/rsync.pwd
sudo chown 普通用户:普通用户组 /etc/rsync.pwd

然后我们打开crontab,使它自动同步

$crontab -e
* * * * * rsync -a --password-file=/etc/rsync.pwd rsync@192.168.64.128::rsync_bk   /databk   

首次执行crontab 的一个界面: (首行的5个* 是固定时间格式)
jia@jia:~/rsync$ crontab  -e
no crontab for jia - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

crontab随机启动 , 即电脑一启动就开启crontab;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值