一 基础知识

1.1 简介

Rsync是Linux系统中的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。rysnc不仅仅能对不同位置的文件和目录进行同步,还可以差异计算,压缩传输文件来最小化数据传输,和cp命令相比,rysnc的优势在于高效的差异算法。并且,rysnc还支持网络数据传输,在复制文件的同时,会把源端与目的端的文件进行比较,只有当文件不一样的时候在进行复制。具有以下特性:
    • 可以镜像保存整个目录树和文件系统;
    • 可以同步增量数据,文件传输效率高,同步时间短;
    • 可以保留原有文件的权限、时间等属性;
    • 加密传输数据,保证了数据的安全性。

1.2 相关目录

/etc/rsyncd(文件夹)
| - rsyncd.conf(rsync 服务器的配置文件)
| - rsyncd.secrets(用户密码文件,客户端使用其中的账号密码访问,需要 600 权限)
| - rsyncd.motd(自定义用户登录后显示的服务器信息,即 messageoftoday)

1.3 其他

  • rsync服务器以deamon方式运行rsync服务,需要打开rsync deamon和启动xinetd服务,默认端口873。
  • rsync客户端是发起rsync连接的服务器,安装rsync即可。
  • rsync客户端发起连接后,rsync服务器会检查rsync客户端提交rsync服务器内建的户名和密码是否正确,如果通过认证检测,则开始文件传输,传输的过程是按要求先比对文件的大小、属性、权限、MD5值等信息,如果两端文件信息不一致,则按要求同步文件的区别块。

二 部署实例

2.1 拓扑

2.2 安装rsync

 [root@apache ~]# cd /tmp/
[root@apache tmp]# tar -zxvf rsync-3.1.2.tar.gz
[root@apache tmp]# cd rsync-3.1.2/
[root@apache rsync-3.1.2]# ./configure
[root@apache rsync-3.1.2]# make && make install
 
注意:Host A和Host B都需要安装。

2.3 配置host a rsync

 [root@apache ~]# vi /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options. # configuration example:
uid = nobody
gid = nobody
use chroot = no
list = no
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
log format = %t %a %m %f %b
motd file = /etc/rsyncd/rsyncd.motd
# address = 192.161.1.1
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [data]
path= /tmp
comment = This is my back file
transfer logging = yes
ignore errors
read only = no
list = no
hosts allow = 172.24.8.0/24
uid =root
gid =root
auth users = backuser
secrets file = /etc/rsync.password #[ftp]
#path = /home/ftp
#comment = ftp export area [root@apache ~]# echo "backuser:x120952576" >/etc/rsync.password
[root@apache ~]# chmod 600 /etc/rsync.password
[root@apache ~]# service iptables stop #建议放通或关闭防火墙
 
配置解释:
uid:指定当该模块传输文件时守护进程应该具有的用户ID,默认为nobody;
gid:指定当该模块传输文件时守护进程应该具有的用户组ID,默认为nobody;
use chroot:为true时,则rsync在传输文件前会先chroot到path参数所指定的目录下,可实现额外的安全防护,但是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true;
list:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true;
port:端口,默认为873;
max connections:指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制;
pid file:此选项指定rsync守护进程对应的pid文件路径;
log file:此选项指定rsync的日志输出文件路径;
log format:日志格式;
[data]:表示一个模块的开始,data为模块的名称;
exclude:指定排除在外的多个由空格隔开的文件或目录(相对路径);
transfer logging:是否记录传输文件的日志;
timeout:指定的IP超时时间,以确保rsync服务器不会等待一个崩溃的客户端,单位为秒钟,默认为0,表示没有超时定义;
address:服务器监听的IP地址,可省略;
ignore nonreadable:指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的;
dont compress:指定不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz;
path:指定该模块的供备份的目录树路径,该参数是必须指定的;
comment:给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户,默认没有描述定义;
ignore errors:指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题;
read only:是否只读,该选项设定是否允许客户上载文件,如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的,默认值为true。
hosts allow:该选项指定哪些IP的客户允许连接该模块;
auth users:该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块;
secrets file:该选项指定一个包含定义用户名:密码对的文件,只有在"auth users"被定义时,该文件才有作用。
注意:该文件的权限一定要是600,否则客户端将不能连接服务器。

2.4 host a启动

 [root@apache ~]# /usr/local/bin/rsync --daemon
[root@apache ~]# echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf">>/etc/rc.d/rc.local #开机启动
[root@apache ~]# ps -ef | grep rsync #验证是否启动
 

2.5 配置host b rsync

 [root@backup ~]# mkdir /backfile		#创建备份目录
[root@backup ~]# echo "x120952576" >/etc/rsync.password
#创建和Host a匹配的密码,路径可自定义,若以命令形式运行,则客户端不需要带用户名。
[root@backup ~]# chmod 666 /etc/rsync.password
[root@backup ~]# service iptables stop #建议放通或关闭防火墙
 

2.6 执行备份

 [root@backup ~]# /usr/local/bin/rsync -vzrtopg --delete --progress backuser@172.24.8.10::data /backfile --password-file=/etc/rsync.password --port=873
参数解释:
-vzrtopg:-v表示“--verbose”,即详细模式输出;-z表示“--compress”,即对备份的文件在传输时进行压缩处理;-r表示“--recursive”,即对子目录以递归模式处理;-t表示“--times”,即保持文件时间信息;-o表示“--owner”,即保持文件属主信息;-p表示“--perms”,即保持文件权限;-g表示“--group”,即保持文件属组信息;
--delete:指定以服务端为基准进行数据镜像同步,即保持rsync服务端目录与客户端目录的完全一致性;
--progress:显示数据镜像同步的过程;
backuser@172.24.8.10::data:使用backuser用户对172.24.8.10服务端的data模块进行同步;
/backfile:指定备份文件在客户端机器上存放的路径;
--password-file:指定客户端存放的密码文件位置;
--port:指定端口,若为默认的873则可省略。

三 扩展知识

3.1 相关命令

 [root@backup ~]# /usr/local/bin/rsync -vzrtopg --delete --progress /var/log/access.log backuser@172.24.8.10::data --password-file=/etc/rsync.password --port=873    #从客户端上传文件至服务端
 

3.2 开机启动chkconfig添加

 [root@apache ~]# vi /etc/init.d/rsync
#!/bin/bash # chkconfig: - 85 15
# description: rsync status1=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
pidfile="/var/run/rsyncd.pid"
start_rsync="rsync --daemon --config=/etc/rsyncd/rsyncd.conf" function rsyncstart() {
if [ "${status1}X" == "X" ]; then
rm -f $pidfile
${start_rsync}
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
if [ "${status2}X" != "X" ]; then
echo "rsync service start.......OK"
fi
else
echo "rsync service is running !"
fi
} function rsyncstop() {
if [ "${status1}X" != "X" ]; then
kill -9 $(cat $pidfile)
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
if [ "${statusw2}X" == "X" ]; then
echo "rsync service stop.......OK"
fi
else
echo "rsync service is not running !"
fi
} function rsyncstatus() {
if [ "${status1}X" != "X" ]; then
echo "rsync service is running !" else
echo "rsync service is not running !"
fi
} function rsyncrestart() {
if [ "${status1}X" == "X" ]; then
echo "rsync service is not running..."
rsyncstart
else
rsyncstop
rsyncstart
fi
} case $1 in
"start")
rsyncstart
;;
"stop")
rsyncstop
;;
"status")
rsyncstatus
;;
"restart")
rsyncrestart
;;
*)
echo
echo "Usage: $0 start|stop|restart|status"
echo
esac
 
更多知识链接:https://www.cnblogs.com/f-ck-need-u/p/7220009.html

001.Rsync简介及使用的更多相关文章

  1. [转帖]rsync简介

    rsync用法详细解释 https://www.cnblogs.com/noxy/p/8986164.html 之前一直使用 scp 现在发现这个命令更好一些. 提要 熟悉 rsync 的功能及其特点 ...

  2. rsync简介与rsync+inotify配置实时同步数据

    rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync ...

  3. 001. Ansible简介

    一 简介 Ansible是一款极其简单的自动化运维工具, 基于Python开发, 集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点. 实现了批量系统 ...

  4. 001.Ceph简介概述

    一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...

  5. 001.Redis简介及安装

    一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key-value 缓存产品有以下三个特点: ...

  6. Webpack 2 视频教程 001 - Webpack 简介

    这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的. 这个基本就是目前 ...

  7. 001.Docker简介概述

    一 简介 Docker最初是dotCloud公司的一个内部项目,诞生于 2013 年初,由google公司开源的Go语言开发. Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移 ...

  8. 001.Heartbeat简介

    一 Heartbeat简介 1.1 概述 Heartbeat是Linux-HA项目中的一个组件,也是当前开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,如心跳检测和资源接管.监测 ...

  9. 001.Keepalived简介

    一 Keepalived 定义 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题.一个LVS服务会有2台服务器运行Keepalived,一台 ...

随机推荐

  1. 前端学习 -- Css -- overflow

    子元素默认是存在于父元素的内容区中,理论上讲子元素的最大可以等于父元素内容区大小.如果子元素的大小超过了父元素的内容区,则超过的大小会在父元素以外的位置显示,超出父元素的内容,我们称为溢出的内容.父元 ...

  2. Mysql(四)正则表达式

    一.正则表达式 1.使用like可以进行不确定的查询(模糊查询),然而,模糊 查询的功能有限,当需要进行更加复杂的模式匹配时,可以 使用正则表达式来完成. 2.正则表达式可以对指定的字符串与模式之间执 ...

  3. Linq与Lambda,神一般的工作效率

    Linq与Lambda,神一般的工作效    通过对linq和lambda的学习,越发感觉linq和lambda的重要性,他们能极大地简化程序,同时提升程序的可读性,大大提升了我们的工作效率,在公司的 ...

  4. Java 动态代理模式浅析

    目录 Java代理设计模式 - 静态代理 静态代理的优点 静态代理的缺点 Java中的动态代理 - 调用处理器 主要笔记: 动态代理类的限制 代理设计模式的UML图: 我将首先介绍Java中的各种代理 ...

  5. 【hihocoder】二分·归并排序之逆序对

    描述 在上一回.上上回以及上上上回里我们知道Nettle在玩<艦これ>.经过了一番苦战之后,Nettle又获得了的很多很多的船.这一天Nettle在检查自己的舰队列表:我们可以看到,船默认 ...

  6. 【转载】SQL注入原理讲解

    这几篇文章讲的都很不错,我看了大概清除了sql注入是怎么一回事,打算细细研究一下这个知识,另写一篇博客: 原文地址:http://www.cnblogs.com/rush/archive/2011/1 ...

  7. 001. MyBatis+SpringMVC+Spring[重置版]

    说在前面的话 三阶段的课程知识点和细节很多,请假应该杜绝! 课后需抓紧时间复习,提高代码质量和速度! 课程周期和学习课程顺序为:[正常情况下] MyBatis 持久层框架 [2周] SpringMVC ...

  8. hdu 5290 Bombing plan

    http://acm.hdu.edu.cn/showproblem.php?pid=5290 题意: 一棵树,每个点有一个权值wi,选择点i即可破坏所有距离点i<=wi的点,问破坏所有点 最少需 ...

  9. 如何用javascript获取和设置css3属性

    ==================获取======================== 我想到的第一个思路 var test = document.getElementById('test'); c ...

  10. 图的最短路径-----------SPFA算法详解(TjuOj2831_Wormholes)

    这次整理了一下SPFA算法,首先相比Dijkstra算法,SPFA可以处理带有负权变的图.(个人认为原因是SPFA在进行松弛操作时可以对某一条边重复进行松弛,如果存在负权边,在多次松弛某边时可以更新该 ...