Rsync服务
第1章 Rsync开篇介绍
1.1 rsync的定义
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台
① 全量备份:第一次传输数据过程中使用全量备份,将全部数据进行传输覆盖
② 增量备份:在第一次传输完毕后再进行传输使用增量备份,只传输差异部分数据
1.2 rsync的简介
Rsync英文全称为Remote synchronization, Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,在本地主机的不同分区或目录之间全量及增量的复制数据。另外,利用Rsync还可以实现删除文件和目录的功能。
Centos5,Rsync2.x对比方法,把所有的文件对比一遍,然后在进行同步。
Centos6,Rsync3.x对比方法,一边比对差异,一边对差异的部分进行同步。
#查看当前虚拟机系统中rsync版本信息
[root@backup ~]# rsync --version rsync version 3.0. protocol version Copyright (C) - by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/
#查看客户端man rsync
#查看服务端配置man rsyncd.conf
1.3 实现增量复制的原理
1.连接两台服务器,确认两台服务器之间可以正常进行数据传递
2.利用算法检测目标主机与当前主机数据信息是否一致
3.确认无误将增量变化的数据进行传递(默认情况)
在同步备份数据时,默认Rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分。
1.4 rsync的实现方法介绍
具有使本地和远程两台主机之间的数据快速复制同步镜像,远程备份功能,可以在本地主机的不同分区或目录之间全量及增量的复制数据。
类似的命令(1v4):scp cp ls rm [与scp cp命令不同的是rsync实现增量复制或同步]
1.5 rsync特性总结说明
1.5.1 支持拷贝普通文件与特殊文件如链接文件,设备等
1.5.2 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy
说明:在打包/opt/data时就排除了oldboy命名的目录和文件
1.5.3 可以做到保持原文件或目录的权限、时间(访问/修改/创建)、软硬链接、属主、组等所有属性均不改变-p
1.5.4 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)
# 将备份/home目录自2008-01-29以来修改过的文件
tar-N -- -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 将备份/home目录昨天以来修改过的文件
tar-N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F ).tar.gz /home
# 添加文件到已经打包的文件(对压缩文件不起作用)
tar -rf all.tar *.gif
说明:这条命令是将所有.gif的文件增加到打包的all.tar里面去。-r表示增加文件
1.5.5 可以使用rcp、rsh、ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
1.5.6 可以通过socket(进程方式)传输文件和数据(服务端和客户端)[重点掌握****]
1.5.7 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像
1.6 rsync软件的优缺点
rsync优点:
1.增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
2.远程Shell通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务
rsync缺点:
1.大量小文件实时同步的比对时间较长,有时候同步过程中,rsync进程可能会停止
2.同步10G这样的大文件有时也会出问题,未完整同步前是隐藏文件,可以通过快传--partial等参数实现
3.一次性远程拷贝可以用scp,大量小文件要达成一个包再拷贝
第2章 Rsync企业工作场景说明
2.1 利用定时任务cron+rsync方式实现数据同步
同步网站内部技术人员数据信息,定时同步配置文件rc.local
说明:定时任务最小周期为1分钟
2.2 利用实时任务cron+rsync方式实现数据同步(解决服务器单点故障)
同步网站外部访问用户数据信息,实时同步方式sersync+rsync;inotify+rsync;lrsyncd+rsync
2.3 *生产场景集群架构服务器备份方案项目(上机)
借助crond+rsync把客户服务器数据同步到备份服务器
全网服务器数据备份解决方案提出及负责实施200x.03-200x.09
1、针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案
2、通过本地打包备份,然后Rsync结合inotifg应用把全网数据统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果
3、定期将IDC机房的数据备份放入公司内部服务器,防止机房地震及火灾问题导致数据丢失
第3章 Rsync工作方式介绍
3.1 本地主机间同步方式
Local: rsync [OPTION...] SRC... [DEST]
3.1.1 实例
[root@backup ~]# rsync /etc/hosts /opt/
3.2 通过ssh远程隧道方式
Access via remote shell:
拉Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
3.2.1 语法说明
1) Rsync为同步的命令
2) [OPTION...]为同步时的参数选项
3) [USER@]HOST...为Rsyng同步的远程的连接用户和主机地址;
[USER@]表示数据传输到远程服务器上时传输数据的用户的身份信息;
HOST表示远程主机信息(IP地址信息 主机名称信息)
4) SRC为源,即待拷的分区、文件或目录等,和HOST之间用一个冒号连接
[远程服务器的数据资源(拉);本地服务器的数据资源(推)]
5) [DEST]即目的分区(目的地)、文件或目录等
[表示本地目录或文件信息(拉);远程目录或文件信息(推)]
拉取(get),表示从远端主机把数据同步到执行命令的本地主机相应目录;
推送(put),表示从本地主机执行命令把本地的数据同步到远端主机指定目录下。
3.2.2 实例
1.文件
#拉[Pull]
[root@backup ~]# rsync -rp root@172.16.1.31:/opt/hosts /etc/ #推[Push]
[root@backup ~]# rsync -rp /etc/hosts root@172.16.1.31:/opt #这里默认当前用户就是root,可以省略,即rsync -rp /etc/hosts 172.16.1.31:/opt
2.目录
#推
[root@backup ~]# rsync -rp /etc/sysconfig root@172.16.1.31:/opt/ #表示把目录本身及子文件推送过去 [root@backup ~]# rsync -rp /etc/sysconfig/ root@172.16.1.31:/opt/ #表示只把目录下面的内容推送过去(目录本身不存在)
3.2.3 rsync参数汇总说明
参数 |
参数说明 |
-v |
详细模式输出,传输时的数据等信息 |
-z |
传输时以压缩的形式以提高传输效率 --compress-level-NUM可按级别进行压缩,局域网可不用压缩 |
-a |
归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD |
-r |
对子目录以递归模式处理,及目录下的所有目录都同样传输 |
-t |
保持文件时间信息 |
-o |
保持文件属主信息 |
-p |
保持文件权限 |
-g |
保持文件属组信息 |
-l |
保留软链接 |
-D |
保持设备文件信息 |
-P |
显示同步的过程及传输时的进度等信息 |
-e |
使用的信道协议,指定替代rsh的shell程序(隧道模式下使用) -e实现指定ssh加密隧道传输 [root@nfs01 ~]# rsync -avz -e "ssh -p 22" /etc/hosts 172.16.1.31:/backup |
--exclude=PATTERN |
指定排除不需要传输的文件模式,相当于tar |
--exclude-from=file |
文件名所在的目录文件,即可以实现排除多个文件,相当于tar |
--bwlimit=RATE |
限制I/O带宽,限速 案例如下 |
--delete |
删除那些DST中SRC没有的文件,从而使目标目录SRC和源目录数据DST一致,即无差异同步数据 |
***保持同步目录及文件属性: -avzP 相当于-vzrtopgDIP |
3.2.3.1 案例:某DBA做数据同步,带宽占满导致用户无法访问网站
问题:没有进行限速设定
rsync -avz dbfile 10.0.0.41:/backup
解决方法:
rsync -avz --bwlimit= dbfile 172.16.1.41:/backup
3.3 ***rsync daemon守护进程方式(需要有服务端和客户端)
1.规划
backup服务器作为rsync服务端
以rsync客户端服务器作为参照服务器,将数据推到rsync服务端
2.部署环境
主机名 |
网卡eth0 |
eth1 |
用途 |
backup |
10.0.0.41 |
172.16.1.41 |
rsync服务端 |
nfs01 |
10.0.0.31 |
172.16.1.31 |
rsync客户端 |
3.3.1 服务端配置-rsync(将服务端配置到backup服务器上)
3.3.1.1 01-查看rsync软件是否存在
rpm -qa rsync
3.3.1.2 02-安装rsync软件
yum install rsync -y
3.3.1.3 03-编辑rsync软件配置文件--配置文件参考资料man rsyncd.conf
(编写好配置文件以便进行后面的步骤)
vim /etc/rsyncd.conf #配置文件描述信息
#creat by Liu at --
##rsyncd.conf start##
#配置文件全局配置(全局变量)
uid = rsync #指定rsync服务运行时,向磁盘进行读取和写入的操作者
gid = rsync
use chroot = no #安全相关参数
max connections = #在同一时间,服务器连接rsync时最大的连接数
timeout = #超时时间定义(s),备份完数据后进行超时自动切断连接
pid file = /var/run/rsyncd.pid #存放进程对应id号的PID文件
(.停止进程更方便;.判断服务是否运行)
lock file = /var/run/rsync.lock #进程的锁文件(当两或多个文件同时传输到一个目的地时,给其中一个文件加锁表示等待该文件处理完毕后再处理另一个文件)
log file = /var/log/resyncd.log #程序运行的日志文件,包括出错信息等
ignore errors #忽略错误程序,继续处理其他文件
read only = false #是否只读,这里设置false表示拥有读写权限进行传输
list = false #是否可以列表
hosts allow = 172.16.1.0/ #准许访问rsync服务器的客户范围(白名单)
#hosts deny = 0.0.0.0/ #禁止访问rsync服务器的客户范围(黑名单)
auth users = rsync_backup #不存在的用户,只用于开门认证
secrets file = /etc/rsync.password #对不存在的用户进行连接认证时的密钥文件 #配置文件模块配置(局部变量【需要遵循全局变量】)
[backup] #[模块名称]以下为局部变量,添加多模块信息无需重启,即时生效
path = /backup #模块数据对应的统一备份位置(路径)
comment = "backup dir by oldboy" #注释,备注信息
##rsyncd.conf end##
3.3.1.4 04-创建rsync软件备份目录的管理用户
useradd -s /sbin/nologin -M rsync id rsync
3.3.1.5 05-创建rsync配置信息中的安全认证文件并修改权限(secrets file密钥)
echo "rsync_backup:oldboy123" >/etc/rsync.password chmod /etc/rsync.password
赋予密码文件权限,只有rsync用户可以读写明文密码
3.3.1.6 06-创建rsync配置信息中的备份目录并进行授权
mkdir -p /backup chown -R rsync.rsync /backup
3.3.1.7 07-启动rsync软件程序进程以获得socket信息(以守护进程的方式)
rsync --daemon ps -ef |grep rsync #加入开机自启动 echo "/usr/bin/rsync --daemon" >>/etc/rc.local
至此,服务端配置操作完成
3.3.2 客户端配置-其他服务器为客户端
3.3.2.1 01-查看rsync软件是否存在
rpm -qa rsync
3.3.2.2 02-安装rsync软件
yum install rsync -y
3.3.2.3 03-创建rsync配置信息中的安全认证文件
echo "oldboy123" >/etc/rsync.password chmod /etc/rsync.password
至此,客户端配置操作完成
3.3.2.4 04-测试rsync软件在客户端
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
实例:交互方式传输数据信息
[root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup #推(本地用户认证+定义好的模块) Password:输入认证用户的密码oldboy123 [root@nfs01 ~]# rsync -avz rsync_backup@172.16.1.41::backup/oldboy /tmp #拉(服务端用户认证) Password:输入rsync_backup的密码
扩展:实现免交互方式rsync传输数据信息(守护进程)
#这里要保证backup目录下不存在etc [root@backup backup]# rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
3.4 rsync知识点补充
3.4.1 配置文件内容总结
模块之上内容为全局变量信息,针对所有模块成效
模块之下内容为局部变量信息,只针对指定模块生效
说明:无论是全局变量还是局部变量发生变化,都建议重启rsync服务使配置生效
3.4.2 删除rsync软件程序进程
杀手三人组
① kill进程pid号
说明:需要知道进程号信息,并且在杀死进程后有提示说明
② killall 进程名
说明:杀死进程后有提示说明
[root@backup ~]# killall rsync [root@backup ~]# killall rsync rsync: no process killed
③ pkill 进程号[模糊杀手,用时需小心]
说明:杀死进程后没有提示信息
pkill杀手的特性注释(以例子说明):
当用pkill杀进程sh脚本时,远程服务就会断开。原因是当pkill杀死sh的同时会连同其他含有sh信息的进程一同杀死,这里就是杀死了sshd导致远程断开。
附:rsync重启方式介绍
[root@backup ~]# ps -ef |grep rsync root : ? :: rsync --daemon
root : pts/ :: grep --color=auto rsync [root@backup ~]# cat /var/run/rsyncd.pid #查看PID文件 [root@backup ~]# kill `cat /var/run/rsyncd.pid` [root@backup ~]# kill `cat /var/run/rsyncd.pid` #依旧要多杀几次 [root@backup ~]# ps -ef |grep rsync root : pts/ :: grep --color=auto rsync [root@backup ~]# rsync --daemon #实现重启
3.4.3 设置rsync软件开机自启动
法一:配置/etc/rc.local文件
法二:配置/etc/init.d/目录
创建脚本信息(if case)→设置脚本文件权限→编辑启动文件参数→加入启动服务列表
方法三:利用xinetd服务启动rsync(确定rsync关闭状态)->有一定影响,尽量不使用
3.4.4 rsync --daemon启动扩展参数
--daemon #<==表示以守护进程方式启动rsync服务
--address #<==绑定指定IP地址提供服务
--config=FILE #<==更改配置文件路径,而不是默认的/etc/rsyncd.conf
--port=PORT #<==更改其他端口提供服务,而不是缺省的873端口
3.4.5 定义变量信息实现免秘钥交互
[root@nfs01 ~]# export RSYNC_PASSWORD=oldboy123 [root@nfs01 ~]# rsync -avz /etc/services rsync_backup@172.16.1.41::backup
此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/
Rsync服务的更多相关文章
- 配置rsync服务,数据同步。
这部分设计服务器端和客户端. [服务器端] 如果服务器没有安装rsync服务则使用yum安装rsync服务. yum install rsync 然后 vim /etc/xinetd.d/rsync ...
- rsync服务架设(数据同步|文件增量备份)
近期由于业务需要,需要将两台服务器数据保持同步.方案有很多,rsync是其中一种解决方案,本文对rsync的安装及配置进行简单说明,其他实现方式有兴趣可以研究.以下是本文提纲,供参考: rsy ...
- rsync 服务部署详解
第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ft ...
- rsync服务精讲 -- 视频
rsync服务 开源数据同步工具rsync视频(老男孩分享) 浏览网址 01-rsync基础介绍 http://oldboy.blog.51cto.com/2561410/1216550 11-rsy ...
- linux rsync服务
1.rsync介绍rsync是一个开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,rsync软件适用于nunix/linux/windows多操作系统上运行.官方网站:h ...
- [Linux] 搭建rsync服务端
rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输. Linux守护进程的运行方式:1.独立运行(stand-al ...
- Rsync服务实战
目录 1 安装rsync软件 2 配置 /etc/rsyncd.conf 3 创建用户(运行rsync服务的用户身份) 4 创建虚拟用户密码文件(客户端连接时候使用) 5启动 rsync 服务,并加入 ...
- ansible和python的zabbix_api批量添加rsync服务的监控
一.正常的处理流程: 1.添加zabbix用户对rsync程序的sudo权限,且不需要输入密码 # visudo即在/etc/sudoers配置文件最后添加如下内容 Defaults:zabbix ! ...
- fedora25的免密码rsync服务配置
目标:实现免密同步数据: 1.安装rsync包: 2.手工添加配置文件: cat /etc/rsyncd.conf # See rsyncd.conf man page for more opt ...
随机推荐
- linux下c语言的多线程编程
我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能 多线程的一些小知识: 一个应用程序可以启动若干个线程. 线程(Lightweight Process,LWP),是程序执 ...
- Entity Framework相关介绍
在深入学习某项技术之前,应该努力形成对此技术的总体印象,并了解其基本原理,本文的目的就在于此. 一.理解EF数据模型 EF本质上是一个ORM框架,它需要把对象映射到底层数据库中的表,为此,它使用了三个 ...
- CoreData和SQLite多线程访问时的线程安全问题
数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两 ...
- 【特效】hover效果之十字动画
效果预览:http://www.gbtags.com/gb/rtreplayerpreview-standalone/3101.htm html: <div class="wrap&q ...
- MySQL5.7以上Zip版官方安装文档(选译)
前言 在windows上安装Zip版MySQL(选译) 学习mysql的朋友们会发现5.7+版本的mysql变得比以前难安装了许多(当然我们可以选择installer版本,但是这样总感觉对学习mysq ...
- 怎么样防止Sql注入
(1)对于动态构造SQL查询的场合,可以使用下面的技术: 第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义.再来看前面的例子,“SELECT * from Us ...
- WPF ListBox 一些小知识点
页面代码: <Grid Grid.Row="0" Grid.Column="2"> <ListBox x:Name="lvStep& ...
- java:利用静态字段和构造函数实现已建对象数查询
问题:使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数. 请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?". 程序设计思想: 利用静态变量指定一个计数 ...
- LeetCode 455. Assign Cookies (分发曲奇饼干)
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- MQTT——控制报文格式
解控制报文格式是学习MQTT中,笔者认为最为重要的一个知识点.MQTT的所有行为都离不开他.控制报文可以分为三个部分组成,分别为:固定报头.可以变报头.有效载荷部分. 注意:上面的说的报文的类型.是指 ...