文档章节

服务器篇08-搭建rsync服务器

ZHAO_JH
 ZHAO_JH
发布于 2017/04/27 10:26
字数 3143
阅读 51
收藏 0

 

语法

rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]host:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

 

对应于以上六种命令格式,rsync有六种不同的工作模式:

  1. 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
  2. 使用一个远程shell程序(如rshssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src
  3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www

选项

-v, --verbose 详细模式输出。 -q, --quiet 精简输出模式。 -c, --checksum 打开校验开关,强制对文件传输进行校验。 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -r, --recursive 对子目录以递归模式处理。 -R, --relative 使用相对路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。 -l, --links 保留软链结。 -L, --copy-links 想对待常规文件一样处理软链结。 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 --safe-links 忽略指向SRC路径目录树以外的链结。 -H, --hard-links 保留硬链结。 -p, --perms 保持文件权限。 -o, --owner 保持文件属主信息。 -g, --group 保持文件属组信息。 -D, --devices 保持设备文件信息。 -t, --times 保持文件时间信息。 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。 -n, --dry-run现实哪些文件将被传输。 -w, --whole-file 拷贝文件,不进行增量检测。 -x, --one-file-system 不要跨越文件系统边界。 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。 -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 --delete 删除那些DST中SRC没有的文件。 --delete-excluded 同样删除接收端那些被该选项指定排除的文件。 --delete-after 传输结束以后再删除。 --ignore-errors 及时出现IO错误也进行删除。 --max-delete=NUM 最多删除NUM个文件。 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 --force 强制删除目录,即使不为空。 --numeric-ids 不将数字的用户和组id匹配为用户名和组名。 --timeout=time ip超时时间,单位为秒。 -I, --ignore-times 不跳过那些有同样的时间和长度的文件。 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 -T --temp-dir=DIR 在DIR中创建临时文件。 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 -P 等同于 --partial。 --progress 显示备份过程。 -z, --compress 对备份的文件在传输时进行压缩处理。 --exclude=PATTERN 指定排除不需要传输的文件模式。 --include=PATTERN 指定不排除而需要传输的文件模式。 --exclude-from=FILE 排除FILE中指定模式的文件。 --include-from=FILE 不排除FILE指定模式匹配的文件。 --version 打印版本信息。 --address 绑定到特定的地址。 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 --port=PORT 指定其他的rsync服务端口。 --blocking-io 对远程shell使用阻塞IO。 -stats 给出某些文件的传输状态。 --progress 在传输时现实传输过程。 --log-format=formAT 指定日志文件格式。 --password-file=FILE 从FILE中得到密码。 --bwlimit=KBPS 限制I/O带宽,KBytes per second。 -h, --help 显示帮助信息。

 

Linux Server端安装配置

yum -y install rsync

#安装rsync服务(现大部分系统已经集成该服务)

rsync的主要有以下三个配置文件

rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

 

服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,需要手动创建。

touch /etc/rsyncd.conf

创建rsyncd.conf,这是rsync服务器的配置文件。

touch /etc/rsyncd.secrets

创建rsyncd.secrets ,这是用户密码文件。

echo "root:123456" > /etc/rsyncd.secrets

访问帐号密码写入rsyncd.secrets密码文件

chmod 600 /etc/rsyncd.secrets

将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

touch /etc/rsyncd.motd

创建服务器信息文件

echo "welcome" > /etc/rsyncd.motd

加入自定义信息

echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf --port=873" >> /etc/rc.local

加入服务开机自启

vi /etc/xinetd.d/rsync

disable = no

#编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no

vi /etc/rsyncd.conf uid = root

#设置数据传输时所使用的组名 gid = root

#设置数据传输时所使用的用户名 max connections = 4

#设置并发连接数

transfer logging = yes

#开启数据传输日志

port = 873

#设置服务器监听端口,默认873 log file = /var/log/rsyncd.log

#设置服务日志文件 pid file = /var/run/rsyncd.pid

#设置服务进程号保存文件名称

lock file = /var/run/rsyncd.lock

#设置锁文件名称

use chroot = no

#设置是否同步名称而不同步数据

read only = yes

#是否允许客户端上传数据

secrets file = /etc/rsyncd.secrets

#设置密码文件 [test]

#设置模块名称 comment = backup web

#自定义注释名称 path = /www/html/

#设置同步路径 exclude = 4g

#指定例外目录 auth users = root

#设置连接服务器时的账户

hosts allow = 192.168.100.0/24

#设置允许连接网段或IP

hosts deny = *

#设置拒绝连接网段或IP,比hosts allow优先级低

rsync --daemon --config=/etc/rsyncd.conf

启用服务,至此rsync可以使用了

Linux客户端同步方式示例

rsync -rvzp --progress --delete --password-file=/usr/local/rsync/pwd.txt testuser@192.168.88.88::test /www/rsync

 

 

##### 注:同步前要先用ssh互访测试,再进行以下操作 ####

 

Rsync for windows

以Windows service 2008 + cWrsync 4.1 为例

安装服务端时候建立rsync用户,密码和系统当前用户保持一致,不然会出现安装完成后服务里边没有rsync服务【为增加安全性,一般不设置为administrator账户】

 

系统用户已经有了刚刚新建的用户

指定需要同步的目录给予该用户权限

 

 

打开rsync安装目录找到rsync.conf配置文件并编辑

gid = 0

uid = 0

#设定用户组和用户

use chroot = false

#用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。

port = 873   

#服务端口

strict modes = false

#是否检查口令文件的权限

hosts allow = *

#指定访问IP或IP段

log file = rsyncd.log

#rsync日志文件

# Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

#

[test]

#同步模块名称

path = /cygdrive/c/wwwroot

#同步路径

read only = false

#同步权限是否为只读

transfer logging = yes

#开启传输文件的日志

 

选择rsync服务并设置服务用户名

打开rsync服务并开启开机自启

 

 

查看对应端口是否可用

 

Windows客户端同步测试

进入客户端或另外同步的服务端进行同步测试

cd C:\Program Files (x86)\ICW\bin

rsync -rvzp --progress --delete 10.0.0.1::test /cygdrive/c/backup

带密码加密型Windows客户端同步方式

rsync -rvzp --progress --delete --passwd-file=c:\pwd.txt testuser@10.0.0.1::test /cygdrive/c/backup

Windows服务器端搭建完成,使用Linux客户端同步也可以正常使用不冲突

 

############################################################

 

注:

1. 关闭防火墙

2. /cygdrive/代表驱动器后跟盘符 参数基本和Linux保持一致

 

############################################################

 

安装配置中常见问题

错误1: rsync: read error: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receive r=3.0.2]

解决:很大可能是服务器端没有开启 rsync 服务。开启服务。

错误2:@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]

解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。

错误3:@ERROR: failed to open lock file

rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]

解决:配置文件 rsync.conf中添加 lock file = rsyncd.lock 即可解决。

错误4: rsync: could not open password file "/cygwin/e/Setting/Rsync/rsync_db.pwd": No such file or directory (2)

解决:密码文件的目录一定要存在,而且要用POSIX风格的写法:/cygdrive/e/Setting/Rsync/rsync_db.pwd

错误5:@ERROR: auth failed on module data_backup rsync error: error starting client-server protocol (code 5) at main.c(1506)

[Receiver=3.0.7]

解决:密码错误,输入正确的密码即可。用户名和密码如果都正确,可能是远程rsync服务器的帐户密码文件的权限必须为600。

错误6: password file must not be other-accessible

解决:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd, Windows下应将密码文件的所有者改成程序运行的用户。

错误7:@ERROR: invalid uid nobody . rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

解决:在rsyncd.conf文件中添加下面两行即可

uid = 0

gid = 0

错误8: @ERROR: chroot failed

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

解决:服务器端的目录不存在或无权限。创建目录并修正权限可解决问题。

错误9:@ERROR: Unknown module ‘tee_nonexists'

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

解决:服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。

错误10:rsync: failed to connect to 218.107.243.2: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

解决:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873或者指定的rsync端口打开。

错误11:rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

解决:/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。

错误12:rsync: chown "" failed: Invalid argument (22)

解决:权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)

错误13:@ERROR: daemon security issue -- contact admin

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

解决:同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件。

错误14:rsync: read error: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]

解决:很大可能是服务器端没有开启 rsync 服务,开启服务。

错误15:rsyncserver 服务启动时报错“rsyncserver服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。”

解决:将安装目录下的rsyncd.pid文件删除,再重新启动RsyncServer服务。一般是异常关机导致的。

错误16:IO error encountered -- skipping file deletion

解决:添加参数 --ignore-errors IO错误也进行删除操作

© 著作权归作者所有

共有 人打赏支持
ZHAO_JH
粉丝 16
博文 171
码字总数 149273
作品 0
宝山
运维
私信 提问
rsync---全网备份---实现步骤

具体要求如下: 1)所有服务器的备份目录必须都为/backup 2)要备份的系统配置文件包括但不限于: a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器) b.开机自启动的...

51_cto_con
2017/05/06
0
0
如何减少服务器上rsync 的io磁盘与主服务器io 占用的问题

对于服务上rsync 的io磁盘与主服务器io 占用的问题,我们可以采用ionice来进行有效解决: 服务器是一台做数据分析的BI服,每天同步的数据文件有上万个,目录下也占用了很多零碎的目录和文件,...

holy2009
2018/06/28
0
0
rsync服务器搭建

rsync在进行文件备份时是如此的方便,以至于我觉得必须在自己的服务器上安装它。这里对rsync的服务器进行了简单粗暴的搭建和配置(直接上代码),对于细节不做深入讨论,但是可以肯定是,服务...

yearnfar
2015/09/21
763
0
rsync搭建

一、服务端的搭建 rpm -ivh http://mirrors.sohu.com/centos/6/os/x8664/Packages/rsync-3.0.6-12.el6.x86_64.rpm 配置文件   rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsy...

周宇1991
2015/08/27
0
0
【运维小实验】数据镜像备份实验inotify+rsync实时备份

数据镜像备份实验inotify+rsync实时备份 本文是基于VM搭建的虚拟集群环境,全部虚拟机网卡模式为NAT方式相连,处于同一网段。 搭建环境: 使用redhead 2.6.32-431.el6.x86_64版本的linux,创...

xierex
2017/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
12
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部