服务器端
#more/etc/rsyncd.conf
uid=nobody
gid=nobody
usechroot=no
maxconnections=4
pidfile=/var/run/rsyncd.pid
lockfile=/var/run/rsync.lock
logfile=/var/log/rsyncd.log
[wap]
path=/usr/local/backup
ignoreerrors
readonly=yes
list=no
hostsallow=192.168.1.2
hostsdeny=0.0.0.0/32
authusers=backup
secretsfile=/etc/rsyncd.secrets
#more/etc/rsyncd.secrets
backup:backup
#chmod600/etc/rsyncd.secrets
#chownroot.root/etc/rsyncd.secrets
#rsync--daemon
客户端
#more/etc/rsync.pass
backup
#more/etc/rsync.sh
rsync-avPbackup@192.168.1.1::www/usr/local/backup
--password-file=/etc/rsync.pass
FAQ
Q:如何通过ssh进行rsync,而且无须输入密码?
A:可以通过以下几个步骤
1.通过ssh-keygen在serverA上建立SSHkeys,不要指定密码,你会在~/.ssh下看到identity和identity.pub文件
2.在serverB上的home目录建立子目录.ssh
3.将A的identity.pub拷贝到serverB上
4.将identity.pub加到~[userb]/.ssh/authorized_keys
5.于是serverA上的A用户,可通过下面命令以用户Bssh到serverB上了
e.g.ssh-luserBserverB
这样就使serverA上的用户A就可以ssh以用户B的身份无需密码登陆到serverB上了。
Q:如何通过在不危害安全的情况下通过防火墙使用rsync?
A:解答如下:
这通常有两种情况,一种是服务器在防火墙内,一种是服务器在防火墙外。无论哪种情况,通常还是使用ssh,这时最好新建一个备份用户,并且配置sshd仅允许这个用户通过RSA认证方式进入。如果服务器在防火墙内,则最好限定客户端的IP地址,拒绝其它所有连接。如果客户机在防火墙内,则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。
Q:我能将更改过或者删除的文件也备份上来吗?
A:当然可以:
你可以使用如:rsync-other-options-backupdir=./backup-2000-2-13...这样的命令来实现。
这样如果源文件:/path/to/some/file.c改变了,那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c,
这里这个目录需要自己手工建立起来
Q:我需要在防火墙上开放哪些端口以适应rsync?
A:视情况而定
rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口:
rsync--port8730otherhost::
或者
rsync-e'ssh-p2002'otherhost:
Q:我如何通过rsync只复制目录结构,忽略掉文件呢?
A:rsync-av--include'*/'--exclude'*'source-dirdest-dir
Q:为什么我总会出现"Read-onlyfilesystem"的错误呢?
A:看看是否忘了设"readonly=no"了
Q:为什么我会出现'@ERROR:invalidgid'的错误呢?
A:rsync使用时默认是用uid=nobody;gid=nobody来运行的,如果你的系统不存在nobody组的话,就会出现这样的错误,可以试试gid=nogroup或者其它
Q:绑定端口873失败是怎么回事?
A:如果你不是以root权限运行这一守护进程的话,因为1024端口以下是特权端口,会出现这样的错误。你可以用--port参数来改变。
Q:为什么我认证失败?
A:从你的命令行看来:
你用的是:
>;bash$rsync-a144.16.251.213::testtest
>;Password:
>;@ERROR:authfailedonmoduletest
>;
>;Idontunderstandthis.Cansomebodyexplainastohowtoacomplishthis.
>;Allsuggestionsarewelcome.
应该是没有以你的用户名登陆导致的问题,试试rsync-amax@144.16.251.213::testtest