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

 

语法

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错误也进行删除操作

转载于:https://my.oschina.net/zhaojunhui/blog/888104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值