Skip to main content

 路由器设置 > 新闻资讯 >

Rsync配置远程同步

2014-04-25 23:35 浏览:

  昨天终于拿到服务器权限,今天第一次登上线上的服务器协助开发人员做远程备份。由于是第一次,心里多少有点负担,生怕做不好(其实更怕做出什么惊天动地的事...)

  开发人员要求将积分的目录备份到两台服务器上,用到的工具是rsync,本来挺简单的一件事,结果由于太久没用,还有不够细心,过程中出现了一些小问题,还好leader帮忙指导一二最终也算是顺利交付任务了,下面记录下今天的过程和遇到的问题。

  任务具体要求如下:

  协助开发人员小许将积分副本同步到目标主机下。

  源服务器:192.168.1.1

  目标服务器:192.168.1.2 192.168.1.3

  服务器平台Ubuntu

  配置过程

  目标服务器上,配置文件(默认不存在),需要手动添加

  wuguihong1@ubuntu:~$ vim /etc/rsyncd.conf

  uid = www

  gid = www

  pid file=/tmp/rsyncd.pid

  log file = /var/log/rsyncd.log

  [jifen]

  path=/data/app-jifen/

  auth users=jifen

  read only = no

  strict modes = yes

  secrets file = /etc/rsyncd.pass

  hosts allow= 192.168.1.1

  hosts deny = *

  创建密码文件

  wuguihong1@ubuntu:~$ sudo vim /etc/rsyncd.pass

  jifen:jifen@rsync

  确保密码文件权限为600,否则会报错

  wuguihong1@ubuntu:~$ sudo chmod 600 /etc/rsyncd.pass

  确保同步的目标目录存在,否则会报错

  wuguihong1@ubuntu:~$ sudo mkdir /data/app-jifen/

  确保目录属主与 rsyncd.conf 中的配置一致

  wuguihong1@ubuntu:~$ sudo chown www.www /data/app-jifen/

  测试

  root@ubuntu:/etc# rsync -vzrtopg --delete /tmp/testrsync jifen@192.168.1.2::jifen --password-file=/etc/rsync.pass

  sending incremental file list

  testrsync

  sent 70 bytes received 27 bytes 194.00 bytes/sec

  total size is 0 speedup is 0.00

  root@ubuntu:/etc# rsync -vzrtopg --delete /tmp/testrsync jifen@192.168.1.3::jifen --password-file=/etc/rsync.pass

  sending incremental file list

  testrsync

  sent 70 bytes received 27 bytes 64.67 bytes/sec

  total size is 0 speedup is 0.00

  到这里配置就完成了,实际上不是什么难事,只不过原本上面就跑了一个进程(/usr/local/rsync),我一上去就往这个目录上配,一直出错,后来问过才知道是要自己搞多一个进程...wtf,看来得事先多做做沟通才行。

  操作过程中遇到的问题:

  问题一

  root@ubuntu:/etc# rsync -vzrtopg --delete /tmp/testrsync jifen@192.168.1.1::jifen --password-file=/etc/rsync.pass

  @ERROR: chroot failed

  rsync error: error starting client-server protocol (code 5) at main.c(1522) [sender=3.0.5]

  解决办法:

  (1) 检查服务、客户端密码文件是否正确:服务端密码文件(这里为/etc/rsync.pass) 的格式为 用户:密码; 客户端密码文件为:密码(没有用户名)

  (2)检查密码文件的权限是否正确

  wuguihong1@ubuntu:~$ ps aux|grep rsync

  root 3978 0.0 0.0 12576 752 ? Ss 16:44 0:00 rsync --daemon --config /etc/rsyncd.conf

  wuguihong1@ubuntu:~$ ll /etc/rsyncd.*

  -rw-r--r-- 1 root root 298 Apr 25 17:04 /etc/rsyncd.conf

  -rw------- 1 root root 18 Apr 25 17:05 /etc/rsyncd.pass

  问题二

  root@ubuntu:/etc# rsync -vzrtopg --delete /tmp/testrsync jifen@192.168.1.1::jifen --password-file=/etc/rsync.pass

  sending incremental file list

  testrsync

  rsync: mkstemp "/.testrsync.k4hMJP" (in jifen) failed: Permission denied (13)

  sent 70 bytes received 27 bytes 64.67 bytes/sec

  total size is 0 speedup is 0.00

  rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1058) [sender=3.0.5]

  解决办法:

  检查服务器端的目录(备份目录)是否存在,并检查其权限。创建目录并修正权限可解决问题。

  问题三

  root@ubuntu:/etc# rsync -vzrtopg --delete /tmp/testrsync jifen@192.168.1.1::jifen --password-file=/etc/rsync.pass

  password file must not be other-accessible

  continuing without password file

  Password:

  解决办法:

  检查服务端和客户端上的密码配置文件权限是否为600(只能为600),若不是可以通过命令 chmod 600 rsync.pass 修改即可