Rsync 服务器文件同步的搭建以及使用

服务器 发布日期:2024/11/6 浏览次数:1

正在浏览: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