Rsync 服务器文件同步的搭建以及使用
rsync 是类unix系统下的数据镜像备份工具, 它可以镜像保存整个目录树和文件系统。并且很容易做到保持原文件的权限,时间,软硬链接等等。
无须特殊权限即可安装。
特点:
快速、 第一次同步时会复制全部内容,但在下一次他只传修改过的文件,并且在传输过程中可以实行压缩及解压缩操作,因此可以使用更少带宽。
安全、 可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket链接
支持匿名传输,以方便进行网站镜像。
首先
下载安装包
wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install
安装完毕后,新建sync配置文件
vim /etc/rsyncd.conf
uid=www
gid=www
max connections=1000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[test]
path=/data0/htdocs/
comment = www.test.com CDN src files
ignore errors
read only = no
hosts allow = 127.0.0.1 192.168.1.0/24 10.1.1.0/24
hosts deny = *
修改配置文件权限 以及项目目录权限
chmod 644 /etc/rsyncd.conf
chown www.www /data0/htdocs
开启rsync
rsync --daemon
服务端与客户端配置一样
在服务端执行
rsync -rtuv --delete /data0/htdocs/ 10.1.1.195::test/
将本地的/data0/htdocs/下的所有文件同步到 客户端10.1.1.195服务器的test模块下
在客户端执行
rsync -vzrtopg --delete --progress www@10.1.1.195::test /data0/htdocs/
将远程服务器10.1.1.195下的test模块内容 同步到本地/data0/htdocs/下
上面这个命令行中-vzrtopg代表的意思是:
-v表示verbose(详细)
-z表示zip(压缩)
-r表示recursive(递归目录)
-topg是保持文件原有属性如o=owner(属主)、t=times(时间)、p=perms(权限)、 g=group(组)的参数
-H表示保持硬连接
-l:保留软链结
-u:表示只更新源文件比目标时间新的文件
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
以下是过程中容易分发生的错误
rsync: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
解决办法: 在/etc/ld.so.conf中加一行/usr/local/lib 运行ldconfig 在运行 rsync --daemon即可
报错原因: 可能之前更新过iconv库,如果你不是root, ldconfig也运行不了的,解决办法就是,设置环境变量 LDFLAGS=-L/usr/local/lib
rsync: failed to connect to 192.168.1.42 (192.168.1.42): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
解决办法: 可能因为客户端或者服务端的防火墙开启 导致无法通信,可以设置规则放行 rsync 或者直接关闭防火墙。
还有一种在同步过程中可能会提示没有权限
解决办法: 看一下模块同步目录权限是否设置的对,模块目录权限要设置为配置文件内的 uid 与 gid