rsync文件同步详解
一. 环境和测试说明
rsync(remote sync)是unix及类unix平台下的数据镜像备份软件,它不像FTP那样需要全备份,rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率
rsync主要分为三个配置文件,分别是rsyncd.conf(主配置文件),rsyncd.secrets(密码文件),rsyncd.motd(服务器信息文件)
本文件以2台机器为列子进行说明
pc1,IP:192.168.0.230,作为rsync服务器,需要配置rsyncd.conf文件
pc2,IP:192.168.0.234,作为rsync客户端,不需要配置rsyncd.conf,文件可为空
在服务器端创建/common目录作为共享目录,复制一些测试文件到该目录中,进行测试
yum -y install rsync #centos默认安装了
mkdir /common; cp /etc/init.d/* /common/
二. 主配置文件说明
vim /etc/rsyncd.conf
motd file = /etc/rsyncd.motd #设置服务器信息提示文件,在该文件中编写提示信息
transfer logging = yes #开启rsync数据传输日志功能
log file = /var/log/rsyncd.log #设置日志文件名,可通过log format参数设置日志格式
pid file = /var/run/rsyncd.log #设置rsync进程号保存文件名称
lock file = /var/run/rsync.lock #设置锁文件名称
port = 873 #设置服务器监听的端口号,默认是873
address = 192.168.0.230 #设置本服务器所监听网卡接口的ip地址
uid = nobody #设置进行数据传输时所使用的帐户名或ID号,默认使用nobody
gid = nobody #设置进行数据传输时所使用的组名或GID号,默认使用nobody
#若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。
use chroot = no
read only = yes #是否允许客户端上传数据,yes表示不允许
max connections =10 #设置并发连接数,0表示无限制
[common] #自定义模块名,rsync通过模块定义同步的目录,可定义多个
comment = web content #定义注释说明字串
path = /common #同步目录的真是路径通过path指定
ignore errors #忽略一些IO错误
#exclude = test/ #exclude指定common目录下某个目录可以不同步数据
auth users = tom, jerry #设置允许连接服务器的账户,此账户可以是系统中不存在的用户
secrets file = /etc/rysncd.secrets #密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效
hosts allow = 192.168.0.0/255.255.255.0 #设置哪些主机可以同步数据,多ip和网段之间使用空格分隔
hosts deny=* #除了hosts allow定义的主机外,拒绝其他所有
list = false #客户端请求显示模块列表时,本模块名称是否显示,默认为true
三. 创建密码文件,防火墙设置,客户端和服务器端都要做如下操作
echo "tom:123" > /etc/rsyncd.secrets
echo "jerry:123" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
echo "welcome to access" > /etc/rsyncd.motd #此项客户端不需要做
rsync --daemon # --daemon表示后台执行,客户端开启rsync不需要--daemon选项
echo "/usr/bin/rsync --daemon" >> /etc/rc.local #开机启动rsync服务
firewall-cmd --permanent --add-port=873/tcp #添加防火墙规则,允许873端口的数据访问
四. 客户端同步数据
yum -y install rsync
rsync -vzrtopg --progress tom@192.168.0.230::common /test #通common模块指定的/common目录下的文件拷贝到本客户端的/test目录下
参数说明
v:显示详细信息
z:传输过程中对数据进行压缩
r:递归
t:保留修改时间属性
o:保留文件所有者属性
p:保留文件权限属性
g:保留文件所属组属性
a:归档模式,主要保留文件属性,等同于-rlptgoD
--progress:显示数据传输的进度信息
--password-file=FILE:指定密码文件,将密码写入文件,实现非交互式数据同步,这个文件名也需要修改权限为600
--delete:删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步经常加上此参数
--list-only:仅列出服务器模块列表,需要rsync服务器设置list=true
五. rsync语法格式,SRC表示源路径,DEST表示目标路径
1. 本地复制
rsync [选项] SRC... [DEST]
2. 通过远程shell复制
下载数据:rsync [选项] [user@a]HOST:SRC...[DEST] #不加user@表示用root用户进行登陆远程主机下载数据到 本地的DEST路径
上传数据:rsync[选项] SRC...[user@]HOST:DEST #这里的SRC表示本地数据,DEST表示远端主机目录
3. 通过rsync进程复制
下载数据
rsync [选项] [user@] HOST::SRC ... [DEST] #这里双冒号后的SRC表示远端服务端的模块名
rsync [选项] rsync://[user@]HOST[:port]/SRC...[DEST] #这里的SRC表示实际的同步目录名,这种方式可以指定端口
上传数据
rsync [选项] SRC...[user@]HOST::DEST #上传本地客户端数据到远端服务端的DEST模块名指定的路径
rsync [选项] SRC...rsync://[user@HOST[:port]/DEST
一些例子
1. rsync -t *.c 192.168.0.54:src/ #将本机当前目录下的以.c结尾的文件赋值到192.168.0.54的src目录下
2. rsync -avz 192.168.0.54:src/bar /data/tmp #从192.168.0.54主机上将src/bar目录以递归方式复制到本机/data/tmp目录
3. rsync -avz 192.168.0.54:src/bar/ /data/tmp #和例子2的区别是不在/data/tmp目录下创建bar目录
4. rsync -avz /src/foo /dest #将本机/src/foo目录复制到/dest目录
5. rsync -avz tom@192.168.0.230::common /test3 #使用tom账户连接远程192.168.0.230主机的rsync进程,将common模块定义的path路径下载到本地test3目录
6. rsync -avz 192.168.0.230::common /test3 #匿名下载192.168.0.230服务器的common模块至本地的/test3目录
7. rsync --list-only tom@192.168.0.254:: #显示192.168.0.254服务器所有的模块名称,需要服务器端配置list=true才会显示
8. 客户端每次连接服务器都需要输入密码很麻烦,可以创建密码文件rsync.pass,在其中包含密码,然后使用--password-file指定此文件
echo "123" > rsync.pass #服务器端用户tom的密码
rsync -avz --delete --password-file=rsync.pass tom@192.168.0.254::common /dest
六. 编写简单shell脚本,使客户端定期对rsync服务器(192.168.0.230)的数据进行备份
#!/bin/bash
export PATH=/bin:/usr/bin:/usr/local/bin
SRC=common #模块名
DEST=/data
server=192.168.0.230
user=tom
passfile=/root/rsync.pass
#if the DEST directory not found, then create one
[ ! -d $DEST ] && mkdir $DEST
[ ! -e $passfile ] && exit 2
rsync -az --delete --password-file=$passfile ${user}@${server}::$SRC $DEST/$(data +%Y%m%d) #加上日期
之后在定时任务中加入执行此脚本即可
七. 附加
ubuntu上做rsync同步可参考 https://www.linuxidc.com/Linux/2016-08/134584.htm
rsync文件同步详解的更多相关文章
- 远程文件同步详解(Remote File Sync)
1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...
- rsync常用参数详解
rsync常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux中,一切皆是文件,包括你的终端,硬件设备信息,目录,内核文件等等.所以工作中我们难免会遇到拷贝文件 ...
- Rsync命令参数详解
在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来.rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进 ...
- 史上最全的maven pom.xml文件教程详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 【Linux学习】Linux下用户组、文件权限详解
原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...
- Uploadify 上传文件插件详解
Uploadify 上传文件插件详解 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中 ...
- C++文件读写详解(ofstream,ifstream,fstream)
C++文件读写详解(ofstream,ifstream,fstream) 这里主要是讨论fstream的内容: #include <fstream> ofstream //文件写操作 内存 ...
- Rsync文件同步
Rsync文件同步 本章结构 关于rsync 1.一款增量备份工具,remote sync,远程同步,支持本地复制或者与其他SSH.rsync主机同步,官方网站:http://rsync.samba. ...
- 转载 Spring、Spring MVC、MyBatis整合文件配置详解
Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...
随机推荐
- 【HDU 6191】Query on A Tree 【可持久化字典树】
题目 给出一棵有n个结点的树,树根是1,每个结点给出一个value.然后给出q个询问,每个询问给出两个整数u和x,你要在以u结点为根的子树中找出一个结点v,使得val[v] xor x最大, 并输出这 ...
- linux 安装网络监控插件indicator-sysmonitor
1.添加源 sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor 2.更新源 sudo apt-get update 3.安装 su ...
- 导入txt文件到SQL SERVER 2008
最近在学习数据库,想要试处理大量数据.大量的数据手动输入是不可能的了,所以需要导入.本人上网看了不少的教程,然后下载了txt格式的一万条彩票开奖记录数据.但是把这些数据导入到SQL Server 20 ...
- Jedis连接Redis三种模式
这里说的三种工作模式是指: 1.单机模式 2.分片模式 3.集群模式(since 3.0) 说明图详见以下: 使用单机模式连接: private String addr="192.168.1 ...
- 10个实用的Django技巧和建议
Django 作为一个杰出的Python开源框架,或许得不到和其它流行框架如Rails这样多的赞美,但是它和其他框架一样精炼,非常注重DRY(Don’t Repeat Yoursef)原则.组件的重用 ...
- 3.1.2 condition 条件
package 第三章.重入锁; import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reent ...
- bt协议详解 基础篇(上)
bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...
- 马尔可夫决策过程MDP
1. 马尔可夫模型的几类子模型 马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无 ...
- ScreenCapturePro2 for Joomla_3.4.7-ckeditor4x
1.1. 与Joomla_3.4.7整合-ck4 示例下载:Joomla_3.4.7, 1.1.1. 添加screencapture文件夹 路径:/media/screencapture 1. ...
- 使用jasmine-node 进行NodeJs单元测试 环境搭建
关于jasmine就不多说了,关于语法请参加官方文档.http://pivotal.github.io/jasmine/ 关于NodeJS的单元测试框架有多种,如果要在NodeJS中使用jasmine ...