三种主要数据传输方式

  1. 单主机本地目录间数据传输(类似cp)
Local:  rsync [OPTION...] SRC... [DEST]
  1. 借助rcp,ssh等通道来传输数据(类似scp)
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
  1. 守护进程(socket)的方式传输数据
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

选项

常用:
-z, --compress 对备份的文件在传输时进行压缩处理。
-v, --verbose 详细模式输出。
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
--bwlimit=KBPS 限制I/O带宽,KBytes per second。
-P 等同于 --partial, --progress 显示备份进度。
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。例:rsync -avzP -e 'ssh -p 22'/etc/ root@192.168.197.129:/tmp/
--exclude=PATTERN 指定排除不需要传输的文件模式。可指定多次
--exclude-from=FILE 排除FILE中指定模式的文件。 --delete 删除那些DST中SRC没有的文件。
-h, --help 显示帮助信息。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。
-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字节。
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。
--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中的文件来决定是否需要备份。
--include=PATTERN 指定不排除而需要传输的文件模式。
--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中得到密码。

实例

  1. 本机把AAA目录下的内容拷贝到BBB目录下,要求保留文件原有属性,删除BBB目录下AAA没有的内容。
rsync -avz --delete AAA/ BBB/
  1. 将本机文件dbfile发送到主机172.16.1.1的backup下,限速2m。
rsync -avzP -e 'ssh -p 22' --bwlimit=204 dbfile 172.16.1.1:/backup

3.把主机opt目录复制到本机tmp目录下

rsync -avzP root@node2:/opt /tmp/

服务器配置

  1. rsyncd.conf配置文件常用参数说明
rsyncd.conf参数 参数说明
uid=rsync rsync使用的用户。
gid=rsync rsync使用的用户组(用户所在的组)
use chroot=no 默认yes,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置
max connections=200 设置最大连接数,默认0,意思无限制,负值为关闭这个模块
timeout=400 默认为0,表示no timeout,建议300-600(5-10分钟)
pid file rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止
lock file 指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制
log file 不设或者设置错误,rsync会使用rsyslog输出相关日志信息
ignore errors 忽略I/O错误
read only=false 指定客户端是否可以上传文件,默认对所有模块为true
list=false 是否允许客户端可以查看可用模块列表,默认为可以
hosts allow 指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接
hosts deny 指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接
auth users 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问
secrets file 指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位
[node2] 这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护。可多段
path 这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题
  1. 安装前准备
服务端node1安装rsync
wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar -zxvf rsync-3.1.2.tar.gz
./configure --prefix=/usr/local/rsync
make && make install
echo "/usr/local/bin/rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local //设置开机启动 创建rsync用户:useradd -M -s /sbin/nologin rsync
创建共享目录:mkdir /data/local_data_backup/
更改共享目录属组:chown -R rsync /data/local_data_backup/
创建虚拟用户密码:echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsync.password
  1. 编辑服务端配置文件
vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
igonre errors
read only = false
list = false
#exclude = lost+found/ 指定目录下某内容不发布
hosts allow = 0.0.0.0/8
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[node2]
path = /data/local_data_backup/
  • 启动服务:rsync --daemon
  1. 客户端node2配置
服务端node2安装rsync
创建密码文件:echo "123456" > /etc/rsync.password
更改密码文件权限:chmod 600 /etc/rsync.password
  1. 测试,注意操作都在客户端进行
客户端指定任意目录内容推送到服务器端rsync指定目录下。
rsync -avz /tmp/ rsync_backup@192.168.1.1::node2 --password-file=/etc/rsync.password
将rsync服务器端指定目录下任意内容同步到客户端
rsync -avzP rsync_backup@192.168.1.1::node2/test.tar.gz /tmp/ --password-file=/etc/rsync.password
  1. 附Rsyncd服务脚本:
#!/bin/bash
# chkconfig:35 13 91
# description:This is Rsync service management shell script
# Source function library
. /etc/rc.d/init.d/functions start(){
rsync --daemon
if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then
action "Starting Rsync:" /bin/true
sleep 1
else
action "Starting Rsync:" /bin/false
sleep 1
fi
} stop(){
pkill rsync;sleep 1;pkill rsync
if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then
action "Stopping Rsync: " /bin/true
sleep 1
else
action "Stopping Rsync:" /bin/true
sleep 1
fi
} case "$1" in
start)
start;
;;
stop)
stop;
;;
restart)
stop;
start;
;;
*)
echo $"Usage: $0 {start|stop|restart}"
;;
esac

Rsync快速入门实例(转)的更多相关文章

  1. 实体框架(Entity Framework)快速入门--实例篇

    在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...

  2. 简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)

    额,有些标题党的嫌疑,小细节不用在意哈... 前端时间我在写一个系列,是关于JavaWeb的一个入门级项目实战,我的初衷就是打算写给初学者的,希望能对他们有所帮助. 这段时间博主也接触了一些事情,感觉 ...

  3. Hibernate快速入门实例

    Hibernate工程项目创建基本步骤:导包(Hibernate依赖包.SQL驱动包).编写实体类.编写ORM映射配置文件.编写核心配置文件.编写测试驱动. 整个工程项目结构如下图: 一.导包 笔者使 ...

  4. Crawler4j快速入门实例

    项目是基于maven 结构的. 首先我们在pom.xml中加入log4j以及log4j驱动类支持: <!-- 加入log4j支持 --> <dependency> <gr ...

  5. Entity Framework快速入门--ModelFirst

    Entity Framework带给我们的不仅仅是操作上的方便,而且使用上也很是考虑了用户的友好交互,EF4.0与vs2010的完美融合也是我们选择它的一个理由吧.相比Nhibernate微软这方面做 ...

  6. Flask快速入门

    flask快速入门 1.1.三种框架比较 Django: 重武器,内部包含了非常多组件:ORM.Form.ModelForm.缓存.Session.中间件.信号等 Flask:短小精悍,内部没有太多组 ...

  7. Expression Blend实例中文教程(11) - 视觉管理器快速入门Visual State Manager(VSM)

    Visual State Manager,中文又称视觉状态管理器(简称为VSM),是Silverlight 2中引进的一个概念.通过使用VSM,开发人员和设计人员可以轻松的改变项目控件的视觉效果,在项 ...

  8. Expression Blend实例中文教程(9) - 行为快速入门Behaviors

    在Blend强大的设计功能支持下,设计人员和开发人员可以无代码实现Silverlight/WPF动画效果,例如上文介绍的StoryBoard,就是一个典型例子,设计人员和开发人员仅需提供必要元素,即可 ...

  9. Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard

    上一篇,介绍了Silverlight动画设计基础知识,Silverlight动画是基于时间线的,对于动画的实现,其实也就是对对象属性的修改过程. 而Silverlight动画分类两种类型,From/T ...

随机推荐

  1. mac使用brew安装mysql报RROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    使用mac安装mysql安装完后运行 mysql -uroot -p 报了 ERROR 2002 (HY000): Can't connect to local MySQL server throug ...

  2. 学习Javascript的编程风格

    Javascript编程风格   Douglas Crockford是Javascript权威,Json格式就是他的发明. 去年11月他有一个演讲(Youtube),谈到了好的Javascript编程 ...

  3. AcWing:238. 银河英雄传说(带权并查集)

    有一个划分为N列的星际战场,各列依次编号为1,2,…,N. 有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列. 有T条指令,每条指令格式为以下两种之一: 1.M i j,表示让第i号战 ...

  4. Codeforces 959D. Mahmoud and Ehab and another array construction task(构造, 简单数论)

    Codeforces 959D. Mahmoud and Ehab and another array construction task 题意 构造一个任意两个数都互质的序列,使其字典序大等于a序列 ...

  5. MKAnnotation image offset with custom pin image

    </pre><pre> Your UIAnnotationView is always drawn at the same scale, the map's zoom leve ...

  6. solr系列之solr-5.5.5 window单机版jdk-1.7 tomcat8安装

    一.Solr5.5.5.Tomcat8-x64.jdk-1.7-64单机部署 1.准备安装包,下载solr和tomcat的安装,直接解压即可(上篇一提供solr的下载路径) 2.在Solr5之前都还存 ...

  7. 【零基础】speech driven animation中文安装使用指南

    注:原项目名叫Speech-Driven Animation,所以我这里就简称为SDA 开局一张图,后面自动编 相信前段时间爆火的DeepNude(AI扒衣)让很多人惊掉了大牙,AI还能干这个?!如果 ...

  8. 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践

    目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...

  9. mybatis中添加时间字符串条件

    <if test="operatorDateStart != null and operatorDateStart !='' " >operator_date > ...

  10. Bootstrap4项目开发实战视频教程

    一.企业网站项目 课件 0.课程简介 1.顶部区域的制作 2.导航区域的制作 3.轮播区域的制作 4.产品区域的制作 5.最新资讯区域的制作 6.底部区域的制作 二.化妆品网站项目 1.项目初始化_导 ...