rsync server 搭建

 

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 [email protected]::rsync_bk . "就可以同步到 当前目录,当然也可以建立一个目录, rsync

jia@jia:~$ rsync -vzrtopg --progress [email protected]::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 [email protected]::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;

你可能感兴趣的:(server,搭建)