rsync 是一个功能非常强大的工具,其命令也有很多功能选项。

rsync 的命令格式为:
1)本地使用:
rsync [OPTION...] SRC... [DEST]
2)通过远程 Shell 使用:
拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST:DEST
3)访问 rsync 服务器:
拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
推: rsync [OPTION...] SRC... [USER@]HOST::DEST
拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

其中:
SRC: 是要复制的源位置
DEST: 是复制目标位置
若本地登录用户与远程主机上的用户一致,可以省略 USER@
使用远程 she ll 同步时,主机名与资源之间使用单个冒号“:”作为分隔符
使用 rsync 服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符
当访问 rsync 服务器时也可以使用 rsync:// UR L
“拉”复制是指从远程主机复制文件到本地主机
“推”复制是指从本地主机复制文件到远程主机
当进行“拉”复制时,若指定一个 SR C 且省略 DEST,则只列出资源而不进行复制

下面列出常用选项:
选项说明
-a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (不包括 -H)
-r, ––recursive 对子目录以递归模式处理
-l, ––links 保持符号链接文件
-H, ––hard-links 保持硬链接文件
-p, ––perms 保持文件权限
-t, ––times 保持文件时间信息
-g, ––group 保持文件属组信息
-o, ––owner 保持文件属主信息 (super-user only)
-D 保持设备文件和特殊文件 (super-user only)
-z, ––compress 在传输文件时进行压缩处理
––exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
––exclude-from=FILE 从 FILE 中读取排除规则
––include=PATTERN 指定需要传输的文件匹配模式
––include-from=FILE 从 FILE 中读取包含规则
––copy-unsafe-links 拷贝指向SRC路径目录树以外的链接文件
––safe-links 忽略指向SRC路径目录树以外的链接文件(默认)

––existing 仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件
––ignore-existing 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件
-b, ––backup 当有变化时,对目标目录中的旧版文件进行备份
––backup-dir=DIR 与 -b 结合使用,将备份的文件存到 DIR 目录中
––link-dest=DIR 当文件未改变时基于 DIR 创建硬链接文件
––delete 删除那些接收端还有而发送端已经不存在的文件
––delete-before 接收者在传输之前进行删除操作 (默认)
––delete-during 接收者在传输过程中进行删除操作
––delete-after 接收者在传输之后进行删除操作
––delete-excluded 在接收方同时删除被排除的文件
-e, ––rsh=COMMAND 指定替代 rsh 的 shell 程序
––ignore-errors 即使出现 I/O 错误也进行删除
––partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
––progress 在传输时显示传输过程
-P 等价于 ––partial ––progress
––delay-updates 将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件
-v, ––verbose 详细输出模式
-q, ––quiet 精简输出模式
-h, ––human-readable 输出文件大小使用易读的单位(如,K,M等)
-n, ––dry-run 显示哪些文件将被传输
––list-only 仅仅列出文件而不进行复制
––rsync-path=PROGRAM 指定远程服务器上的 rsync 命令所在路径
––password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用
-4, ––ipv4 使用 IPv4
-6, ––ipv6 使用 IPv6
––version 打印版本信息
––help 显示帮助信息
若使用普通用户身份运行 rsync 命令,同步后的文件的属主将改变为这个普通用户身份。
若使用超级用户身份运行 rsync 命令,同步后的文件的属主将保持原来的用户身份。

在本地磁盘同步数据
# rsync -a --delete /home /backups
# rsync -a --delete /home/ /backups/home.0
在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:
/home : 表示将整个 /hom e 目录复制到目标目录
/home / : 表示将 /hom e 目录中的所有内容复制到目标目录

上面的理论讲完了我也是 --help 翻译来的。

下面开始讲例子,这是我实际工作中迁移服务器我做的当然IP我用改成了私有地址。

服务器:192.168.0.1

客户端:192.168.0.2

wget http://samba.anu.edu.au/ftp/rsync/src/rsync-3.0.7.tar.gz
cd /usr/local/src/rsync-3.0.7/
./configure --prefix=/usr/local/rsync-3.0.7 --disable-iconv --disable-iconv-open
make && make install

cd /usr/local/rsync-3.0.7
mkdir var
mkdir conf
cd conf
touch rsyncd.conf
touch rsyncd.secrets
vi rsyncd.conf

############################
uid = nobody
gid = nobody
use chroot = no
read only = yes
timeout = 600
max connections = 40
hosts allow = 192.168.0.2

secrets file = /usr/local/rsync-3.0.7/conf/rsyncd.secrets
#motd file = /etc/rsyncd.motd
pid file = /usr/local/rsync-3.0.7/var/rsyncd.pid
lock file = /usr/local/rsync-3.0.7/var/rsync.lock
log file = /usr/local/rsync-3.0.7/var/rsyncd.log

[shop]
path = /www/shop
##################################################
vi rsyncd.secrets
##############################
帐号:密码
##################################
chmod 600 rsyncd.secrets

启动服务 /usr/local/rsync-3.0.7/bin/rsync --daemon --config /usr/local/rsync-3.0.7/conf/rsyncd.conf
ps 下
vi /etc/services
services并不是rsync的配置文件,这一步也可以不做。
而修改了services文件的好处就在于系统知道873端口对就的服务名为rsync。修改services的方法就是确保services中有如下两行,
没有的话就自行加入:  rsync  873/tcp  # rsync  
rsync  873/udp  # rsync

--------------------------------------------------------------------------------------------------
客户端的脚本
vi /etc/.rsync.pass

服务器端:rsyncd.secrets的
帐号:密码

#!/bin/sh

# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called "current"
# tridge at linuxcare dot com

# directory to backup
BDIR=/www/shop

# excludes file - this contains a wildcard pattern per line of files to exclude
#EXCLUDES="--exclude=htm/* --exclude=*conf*.php --exclude=static/* --exclude=crontab/* "
# --exclude=*conf*.php "

EXCLUDES=" --exclude=htm/* --exclude=static/* --exclude=cache_new/* --exclude=replyagree/*
--exclude=htmold/* --exclude=ysmp/cache/* --exclude=topic2008/* --exclude=tmp/*
--exclude=ysmp/templates_c/* --exclude=upload/* --exclude=topic090706/* --exclude=subList/* --exclude=topiclist/* "

# the name of the backup machine
BSERVER=帐号@192.168.0.1

########################################################################
BACKUPDIR=/www/back/clubback/`date +%Y/%m/%d/%H_%M`
OPTS="--force --ignore-errors --delete --password-file=/etc/.rsync.pass -avz --progress "
#OPTS="--force --ignore-errors --exclude-from=$EXCLUDES --delete --password-file=/etc/.rsync.pass -avz --progress "

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# the following line clears the last weeks incremental directory

# now the actual transfer
echo rsync $OPTS $BSERVER::shop/ $BDIR
rsync $OPTS $BSERVER::shop/ $BDIR

注意 :/etc/.rsync.pass   这里是你的认证密码文件 不用手动输入了,只需要写密码即可!

当然这里客服端的目录需要自己建立 没有的应该报错。。,脚本最下面的shop 是服务器端声明的项目[shop]。

不想使用源码包也可以的:

一、服务器端配置:
yum -y install xinetd
vi /etc/xinetd.d/rsync
将如下代码
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = –daemon
log_on_failure += USERID
}
中的disable = yes 改成 disable = no
然后启动xinetd
/etc/init.d/xinetd start
注意:如果服务器上装有防火墙记得要打开端口,默认端口是873
vi /etc/rsyncd.conf
[backup]
path = /www
auth users = admin
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no
[主機代號:自訂]
path = 備份資料放置的路徑
auth users = 定義援權的帳號
uid = 應是執行時的uid
gid = 應是執行時的gid
secrets file = 認證密碼檔的位置
read only = 是否唯讀

vi /etc/rsyncd.secrets
填上 xywy_rsync_user:1234 #自己建立密碼

hosts allow = 可写可不写访控
(允许的IP 地址)
chown root:root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

二、client端进行同步
客户端默认好像已经装了rsync,没有的话装下:yum -y install rsync
执行异步同步操作:
/usr/bin/rsync -avz –progress  admin@192.168.1.105::backup /www
同步命令说明:
1 显示目录内容
命令
——
a) rsync <dst-dir>
b) rsync -r <dst-dir>
c) rsync jack@192.168.0.1::<dst-dir>
d) rsync ssh_user@192.168.0.1:<dst-dir>
命令说明
———
a) 显示<dst-dir>目录内容(第一层)
b) 递归显示<dst-dir>目录内容
c) 显示远程主机<dst-dir>目录内容
*注1:端口模式, 基于rsync用户的身份验证
*注2:rsync server上的目录必须具有xx7的权限.
d) 查看远程主机<dst-dir>目录内容
*注1:remote shell模式, 通过ssh连接的基于系统本地用户的身份验证
*注2:这里只使用了一个冒号(:),同时用户名是远程主机的ssh 用户,密码也是ssh用户对应的密码。
*注3:使用”<dst-dir>”,则列出<dst-dir>文件夹本身的信息。若要列出<dst-dir>文件夹内容,应使用”<dst-dir>/”。
参数说明
———
-r          对目录进行递归操作
2 本地目录之间同步

命令
——
a) rsync -av  –progress <src-dir>/ <dst-dir>             *** 注意(/) ***
b) rsync -av  –progress <src-dir>  <dst-dir>
c) rsync -avu –progress –delete <src-dir>/  <dst-dir>
d) rsync -av  –progress –temp-dir=/tmp <src-dir>/ <dst-dir>

命令说明
———
a) 同步src-dir目录下所有文件到dst-dir目录下
b) 同步src-dir目录下所有文件到dst-dir/src-dir目录下
c) 对src-dir目录内容向dst-dir目录下进行差异更新,有增加/更新则添加替换,有减少则对其删减
d) 比a)多了–temp-dir=/tmp,即指定/tmp为临时交换区,这样可以避免因目标目录空间不够引起的无法同步文件的错误。
参数说明
———
-a          相当于 -rlptgoD 的集合
-u          等同于 –update,在目标文件比源文件新的情况下不更新
-v          显示同步的文件
–progress  显示文件同步时的百分比进度、传输速率
–delete    删除目标目录中多于源目录的文件
3 异地主机之间同步
命令
——
a) rsync -avz  –progress <src-dir> jack@192.168.0.1::<dst-dir>/
b) rsync -avz  –progress <src-dir> jack@192.168.0.1::<dst-dir>/ –password-file=/home/jack/rsync.jack
c) rsync -avuz  –progress –delete <src-dir> jack@192.168.0.1::<dst-dir>/ –password-file=/home/jack/rsync.jack
d) rsync -avz  –progress jack@192.168.0.1::<dst-dir>/<src-dir> <dst-dir>
命令说明
———
a) 同步本地<src-dir>目录的内容到远程主机192.168.0.1的<dst-dir>目录下,jack是rsync数据库用户(参见3. /etc/rsync.secrets)
b) 通过自动读取用户密码而实现非交互登录文件同步
c) 较b)多了-u和–delete
d) 同步远程主机内容到本地目录

当然你是个懒人,可以给你刺激让你写出方便自己的脚本简化工作!

rsync常见错误解决:

问题一:

@ERROR: chroot failed

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

原因:

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

问题二:

@ERROR: auth failed on module tee

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

原因:

服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。提供正确的用户名密码解决此问题。

问题三:

@ERROR: Unknown module ‘tee_nonexists’

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

原因:

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

问题四:

password file must not be other-accessible

continuing without password file

Password:

原因:

这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

问题五:

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 error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

原因:

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

问题七:

rsync: chown "" failed: Invalid argument (22)

原因:

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

问题八:

@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。掠过软连接文件。

本文转自 houzaicunsky 51CTO博客,原文链接:

http://blog.51cto.com/hzcsky/475622

rsync搭建和错误解决相关推荐

  1. 大数据技术之Hadoop概述集群环境搭建常见错误解决等

    Hadoop概述 文章目录 Hadoop概述 1. Hadoop是什么 2. Hadoop发展历史 4. Hadoop的优势 5. Hadoop组成 6. 大数据技术生态体系 7. 推荐系统框架图略图 ...

  2. linux 下搭建yolov3错误,yolov3---报段错误的可能原因及解决方法

    参考: ************************************************************************************************ ...

  3. Maven项目错误解决小结

    Maven项目错误解决小结 注:整理错误,不喜欢为了一个小问题,占篇幅,所以请Ctrl+F自己查看,定位问题,愿为解决. 注:网络上的错误解决经验,只是作者在特定的条件下发生,或者适合你不适合你,请勿 ...

  4. Typora搭建图床解决上传md文档图片无法加载的问题

    Typora搭建图床||解决上传md文档图片无法加载的问题 写在前面 写下这篇文章的时候,据说好像是gitee官方禁止了图床上传方面的功能,我做了尝试是报了403错误,只能说错不在我咯,哈哈.所以说这 ...

  5. 记录 vue-admin-template 中 npm install 错误解决办法

    项目源码地址,也有各种错误解决办法: 源码地址 在搭建网站用 vue-admin-template 时: npm install 时出现如下问题 npm install npm ERR! code E ...

  6. 安装mingw+Theano+keras(多警告、错误解决办法)

    安装mingw+Theano+keras 一.关于深度学习框架TensorFlow.Theano 和 Keras 二.可以安装theano.keras的python版本 三.安装mingw+Thean ...

  7. phpstudy访问localhost/phpMyAdmin提示404错误解决方法

    ①参考链接:phpstudy访问localhost/phpMyAdmin提示404错误解决方法 ②报错的原因是www中的phpMyAdmin删除导致的. ③解决方案是在www.phpmyadmin.n ...

  8. 网站服务器错误显示500要怎么解决方法,什么是服务器500错误?500错误解决办法大全...

    什么是500报错 被称为http500服务器内部错误,从名称上可以理解为服务器问题导致的错误.一般给站长展现出的问题分为两种情况,一是服务器环境或者不支持的组件等原因导致的500错误,这种情况下即使建 ...

  9. 搭建Flutter项目——解决证书报错

    搭建Flutter项目--解决证书报错 PKIX:unable to find valid certification path to requested target 没错就是这句话,把我给整吐了! ...

最新文章

  1. 布线时其他区域变黑、高亮Net时其他区域太黑
  2. 【IM】关于条件随机场CRF的理解
  3. CSDN创始人蒋涛:拥抱中国开源技术生态发展黄金十年
  4. [导入]ServerVariables集合
  5. 【JAVA】java 堆溢出分析
  6. amazeui学习笔记--css(常用组件2)--面包屑导航Breadcrumb
  7. pdfminer的安装
  8. Activity启动模式之SingleTask模式各种跳转
  9. VASP服务器第一次安装各种软件(中)
  10. python 携程酒店数据爬取_小老弟,来爬取携程的民宿酒店数据啦(附带源码).md...
  11. 使用ajax请求下载excel文件
  12. 数据分析案例——销售利润不达标原因分析及应对策略
  13. 软件工程阶段性总结(一)——概述
  14. 对于rh v5系列服务器,华为rh2288v5服务器重定向问题引起pxe报错
  15. 实施配置 b/s 架构 webERP
  16. PostGISGeography支持功能PostGIS Geography Support Functions
  17. socket通信read丢失数据可能原因
  18. 饿了么第一届信息安全峰会
  19. FCS五色石 | 项目半月报(2020.5.1-2020.5.15)
  20. Apache2.2+PHP5.3+MySql5.5上构建EyeOS2.5

热门文章

  1. 点击试剂CuAAC,标记生物分子用科研试剂供应
  2. org.xml.sax.SAXException: Invalid element
  3. 数字IC设计自学入门难吗?如何快速入门呢?
  4. Solid Converter PDF v9安装(附安装包和激活码)
  5. java计算机毕业设计基于安卓Android微信的仓库货物进销存管理系统 小程序 uniapp
  6. 普元EOS和BPS系统表表结构以及注释说明
  7. 一种新的爬虫网络解锁器
  8. TKinterDesigner从入门到精通视频教程
  9. 【可食用】KeyTool生成KeyStore,证书、公钥、私钥文档JAVA生成,JAVA实现ECC签名验签
  10. 备份还原工具NetBackUp7.6.1安装配置使用文档