rsync命令格式
CODE:
命令格式:
#rsync [option] 源路径 目标路径
其中:
[option]:
a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
z:表示传输时压缩数据
v:显示到屏幕中
e:使用远程shell程序(可以使用rsh或ssh)
--delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
--include=PATTERN:不排除符合PATTERN的文件或目录
--exclude=PATTERN:排除所有符合PATTERN的文件或目录
--password-file:指定用于rsync服务器的用户验证密码
源路径和目标路径可以使用如下格式:
rsync://[USER@]Host[:Port]/Path <--rsync服务器路径
[USER@]Host::Path <--rsync服务器的另一种表示形式
[USER@]Host:Path <--远程路径
LocalPath <--本地路径
※需要注意的是,来源或目的路径最少要有一个是本地路径,如果忽略本地路径,则只会列出远端的文件列表。
一、下载、安装rsync
可以到 rsync.samba.org下载,我下载的版本是rsync-3.0.0pre10.tar.gz
tar -xzvf rsync-3.0.0pre10.tar.gz
安装 rsync 十分简单, 进入解压目录用以下这条指令即可搞定:
./configure && make && make install
二 设定 /etc/xinetd.d/rsync, 简单如下:
# default: off
# description: The rsync server is a good addition to am 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
}
然后执行命令 service xinetd restart, 使上述设定生效.
上述, 主要是要打开 rsync 這个 daemon, 一旦有 rsync client 要连接时, xinetd 会把它转介給 rsyncd (跑 port 873).
3. 设定 /etc/rsyncd.conf(需要手动生成) :
以下配置, 代表开放给某一台 rsync client 主机的设定, 如下:
[mch1]
path = /bk/server/mch1_backup
auth users = mch1_backup
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no
比较重要的解释:
[mch1] 代表欲备份的主机编号, 名称可自定.
path 用来设定备份档案要存放在那个目录? 请先用 mkdir设定好, 名称自定.
auth users 代表授权的帐号, 名称自定.
secrets file 代表储存帐号密码的文件, 这里放置的路径名.
当然, 这台备份主机, 可以容纳许多 rsync client 连接, 只要在 rsyncd.conf 中设定即可.
代表二个主机 mch1 及 mch2 如下:
[mch1]
path = /bk/server/mch1_backup
auth users = mch1_backup
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no
[mch2]
path = /bk/server/mch2_backup
auth users = mch2_backup
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no
再附带一个较完整的rsyncd.conf ,如下:
#vi /etc/rsyncd.conf
全局参数
uid = nobody
gid = nobody
use chroot = no //不使用
chrootmax connections = 4 // 最大连接数为4
pid file = /var/run/rsyncd.pid //pid文件的存放位置
lock file = /var/run/rsync.lock //锁文件的存放位置
log file = /var/log/rsyncd.log //日志记录文件的存放位置模块参数[web_test] // 这里是认证的模块名,在client端需要指定
path = /home/web_test/ // 需要做镜像的目录,不可缺少!
comment = This is a test //这个模块的注释信息
ignore errors // 可以忽略一些无关的IO错误
read only = yes // 只读
list = no // 不允许列文件
auth users = test // 认证的用户名,如果没有这行,则表明是匿名,此 用户与系统无关
secrets file = /etc/backserver.pas // 认证文件名
hosts allow = 1.1.1.1,2.2.2.2 //允许主机
hosts deny = 0.0.0.0/0 //禁止主机
transfer logging = yes
log format = "%a %f %l"#log format = "%o %h [%a] %m (%u) %f %l"
4. 设定密码:
rsyncd.secrets 的內容很简单, 格式为 帐号:密码
如以下例子:
mch1_backup:ILoveOLS3
注意! 上述设定只是一个例子, 请务必自定一组, 不要直接套用.
接下來, 要将 rsyncd.secrets 这个密码文件的属性设为root 拥有, 并且权限设为 600,否则无法备份成功!
因此, 执行以下两条命令:chown root.root rsyncd.secrets
chmod 600 rsyncd.secrets
至此, rsync server 端已设定完成, 若想查看备份记录, 可参考 /var/log/rsyncd.log 这个日志. 接下来是 client 端的设定.
5.设定客户端假设这台主机的IP为: 192.168.1.10 假设把密码文件放在 /root/rsyncd.secrets, 內容只要含有密码一行即可:ILoveOLS3
注意: rsyncd.secrets 的权限属性必須设为 600
接下来 我们来测试一下指令是否可以成功?
/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /opt/noplay
[email protected]::mch1
如图所示,就代表成功了。
[img]http://hiphotos.baidu.com/hdsoft/pic/item/236e5ca950d24bec1f17a255.jpg[/img]
可能遇到的问题总结:
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 中的密码设定, 二端是否一致?并且已改文件属性为600
2. Q: 出现这个问题, 是怎么回事?password file must not be other-accessiblecontinuing without password filePassword:
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 建立好备份目录.