Rsync,可用于全自动的网络备份(镜像),目前由rsync.samba.org 维护.
本文环境:
rsync: version 2.6.3 protocol version 28
OS: Slackware 9.2
启动 Rysncd
rsync(d)服务端启动两种方式
1.daemon 2.xinetd inetd
启动后绑在 TCP/873 端口
% cat /etc/xinetd.d/rsync
# 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
}
配置/etc/rsyncd.conf
如果没有创建rsyncd.conf文档,自己需要创建rsyncd.conf文档(下面其实配置相同)
[root@linuxas3 root]# vi /etc/rsyncd.conf
uid=nobody
gid=nobody
max connections=4
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
#auth users=root
secrets file=/etc/rsyncd.secrets
[postfix]
path=/var/mail
comment = backup mail
ignore errors
read only = yes
list = no
auth users = postfix
[netkiller]
path=/home/netkiller/web
comment = backup 9812.net
ignore errors
read only = yes
list = no
auth users = netkiller
[pgsqldb]
path=/var/lib/pgsql
comment = backup postgresql database
ignore errors
read only = yes
list = no
选择说明
uid = nobody
gid = nobody
use chroot = no # 不使用chroot
max connections = 4 # 最大连接数为4
pid file = /var/run/rsyncd.pid #进程ID文件
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log # 日志记录文件
secrets file = /etc/rsyncd.pwd # 认证文件名,主要保存用户密码,权限建议设为600,所有者root
[module] # 这里是认证的模块名,在client端需要指定
path = /var/mail # 需要做镜像的目录
comment = backup xxxx # 注释
ignore errors # 可以忽略一些无关的IO错误
read only = yes # 只读
list = no # 不允许列文件
auth users = postfix # 认证的用户名,如果没有这行,则表明是匿名
[other]
path = /path/to...
comment = xxxxx
密码文件A,(被认证的用户,就是本地与要其它地同上时,需要的认证用户)
在server端生成一个密码文件/etc/rsyncd.pwd
[root@linuxas3 root]# echo postfix:xxx >>/etc/rsync_passwd
[root@linuxas3 root]# chmod 600 /etc/rsync_passwd
密码文件B,(为远程用户的认证:就是其它需要与本地同步时,远程PC在执行同步时所需要的帐号)
在server端生成一个密码文件/etc/rsyncd.secrets
[root@linuxas3 root]# echo postfix:xxx >>/etc/rsyncd.secrets[[root@linuxas3 root]# chmod 600 /etc/rsyncd.secrets
启动rsync daemon
[root@linuxas3 root]# rsync --daemon
测试
[root@linux docbook]# rsync rsync://
[root@linux tmp]# rsync rsync://netkiller@
Password:
[chen@linux temp]$ rsync -vzrtopg --progress --delete postfix@ /tmp
Password:
rsync rsync://认证用户@主机/模块
rsync -vzrtopg --progress --delete 认证用户@主机::模块 /mirror目录
添加到启动文件
echo "rsync --daemon" >> /etc/rc.d/rc.local
完成!
rsync的参数不是很多,比较常用的:
-z 压缩
-r 递归,就是文件夹下所有东西
-l 链接当链接
-t 同步文件时间
-o -g 同步文件owner group
----delete 删除目标目录(镜像目前服务器上)中的文件,就是如果源服务器上没有文件A,而目标目票中有文件A,则删除A。如果没有这个选项,那么每次执行镜像,就把源目录的文件或子目录同步到目标服务器,并不管服务器上的文件(文件名相同则覆盖)。
郁闷的问题:
2.4.29 Slackware linux
我用编的脚本运行一些同步时,系统有提示:password file must not be other-accessible,
-rw-r--r-- 1 root root 11 Oct 17 09:45 /etc/rsync_passwd
-rw-r--r-- 1 root root 1097 Feb 7 09:33 /etc/rsyncd.conf
-rw-r--r-- 1 root root 12 Feb 3 2004 /etc/rsyncd.secrets
我把这些文件都改为如下600,则OK,
-rw----- 1 root root 11 Oct 17 09:45 /etc/rsync_passwd
-rw----- 1 root root 1097 Feb 7 09:33 /etc/rsyncd.conf
-rw----- 1 root root 12 Feb 3 2004 /etc/rsyncd.secrets
但是在2.4.20 Slackware linux,这些文件属性就是(644) -rw-r--r-- ,可能是版的原因
再补充:
同步时注意注意 / 最后的问题
不放/ 则目录名也包含mirror
放 / 则只有目录里面的东西mirror了
参考文献:
可能會遇到的疑難問題:
1. Q: 出現以下這個訊息, 是怎麼一回事?
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一致?
2. Q: 出現以下這個訊息, 是怎麼一回事?
password file must not be other-accessible
continuing without password file
Password:
A: 這表示 rsyncd.secrets 的檔案權限屬性不對, 應設為 600
請下 chmod 600 rsyncd.secrets
3. Q: 出現以下這個訊息, 是怎麼一回事?
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這通常是您的 rsyncd.conf 中
的 path 路徑所設的那個目錄並不存在所致.
請先用 mkdir 開設好備份目錄.
Windy.Chan 修改于 28 Mar, 2007 13:05
阅读(4910) | 评论(2) | 转发(0) |