博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync数据同步备份
阅读量:5248 次
发布时间:2019-06-14

本文共 5305 字,大约阅读时间需要 17 分钟。

一、rsync简介

(1)rsync是什么?

  • rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。

(2)rsync作用比较

  • 远程拷贝:有点类似ssh的scp命令
  • 本地拷贝:cp
  • 删除:rm
  • rsync可以是一个网络服务(port,socket)

(3)rsync工作原理

在同步备份数据时,rsync通过其独特的“quick cheek”算法,仅同步大小或者修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速同步备份数据

(4)rsync特性:

  • 支持拷贝特殊文件如链接文件,设备等。
  • 可以排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变
  • 可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高
  • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)

二、rsync在企业工作场景

  • 两台服务器之间数据同步cron+rsync,不是实时同步
  • rsync结合inotify的功能做实时的数据同步rsync+inotify或sersync

第一种工作模式:

rsync客户端命令:

rsync -avz /etc/hosts /tmp/等价于 cp -a /etc/hosts/tmp/

-a 保持文件原来的属性

rsync -avz --delete /null/ /tmp/等价于rm

第二种工作模式:

push:rsync -avzP -e 'ssh -p 21987' /etc/passwd hongpeng01@10.69.112.134:/tmp/

pull:rsync -avzP -e 'ssh -p 21987' hongpeng01@10.69.112.134:/tmp/ /tmp/

第三种工作模式:

需要存放备份文件的机器(10.69.112.77)

1、配置文件

vim/etc/rsyncd.conf

#工作中指定用户(需要指定用户)
uid = rsync
gid = rsync
#相当于黑洞.出错定位
use chroot = no
#有多少个客户端同时传文件
max connections = 200
#超时时间
timeout = 300
#进程号文件
pid file = /var/run/rsyncd.pid
#日志文件
lock file = /var/run/rsync.lock
#日志文件
log file = /var/log/rsyncd.log
#模块开始
#这个模块对应的是推送目录
#模块名称随便起
[backup]
#需要同步的目录
path = /backup/
#表示出现错误忽略错误
ignore errors
#表示网络权限可写(本地控制真正可写)
read only
= false
#这里设置IP或让不让同步
list = false
#指定允许的网段
hosts allow = 10.69.112.0/24
#拒绝链接的地址,一下表示没有拒绝的链接。
hosts deny = 0.0.0.0/32
#不要动的东西(默认情况)
#虚拟用户
auth users = rsync_backup
#虚拟用户的密码文件
secrets file = /etc/rsync.password

2、创建rsync用户,及共享目录/backup

useradd rsync -s /sbin/nologin

mkdir /backup

chown -R rsync /backup

3、创建用户密码

echo "rsync_backup:hongpeng" > /etc/rsync.password

chmod 600 /etc/rsync.password

4、启动

rsync --daemon

netstat -tunlp | grep rsync

5、加入开机自启动

echo "rsync --daemon" >>/etc/rc.local

修改完配置文件

pkill rsync

rsync --daemon

 

需要推送备份文件的机器(10.69.112.133)

1.echo "hongpeng" > /etc/rsync.password #推送备份文件只需密码,不需用户

chmod 600 /etc/rsync.password

2.rsync -avz /data/text.txt rsync_backup@10.69.112.77::backup --password-file=/etc/rsync.password

 

三、rsync优缺点:

优:

  • 增量备份同步 支持socket 集中备份

缺:

  • 大量小文件备份时,时间比较长,有时进程停止。解决:打包同步 drbd(文件系统同步复制block)
  • 同步大文件,10G文件有时有问题,中断。未完成同步前,是隐藏文件。

 四、生产环境cron+rsync实现svn配置文件同步

10.69.213.12备份服务器

[SVN_repos]

uid = root
gid = root
path = /home/svn
read only = no
hosts allow = 10.69.213.11

10.69.213.11主服务器

cron执行脚本

#!/bin/bashtime1=`date +%s`time /usr/bin/rsync -avzP --delete --progress /home/svn/SVN_repos  root@10.69.213.12::SVN_repostime2=`date +%s`echo $time1echo $time2a=`echo  ${time2}-${time1}|bc`b=`expr ${a} % 60`c=`echo ${a}/60|bc`backup_Ymd=`date +%Y-%m-%d-%H`echo "${c}m ${b}s"d=`echo "${c}m-${b}s"`echo ${d} > /var/log/svn/${backup_Ymd}-$d.txt

 

五、inotify+rsync实现文件实时备份

需要备份的机器10.69.112.133

vim backup.sh

#!/bin/bashinotify=/usr/local/inotify/bin/inotifywait$inotify -mrq --format '%w%f' -e create,close_write,delete /data | while read filedocd / && rsync -az ./data --delete rsync_backup@10.69.112.77::backup/ --password-file=/etc/rsync.passworddone

for i in `seq 100`;do touch stu$i;done#在需要备份的目录下创建100个文件

/bin/bash /usr/local/scripts/backup.sh &#后台执行

加入rc.local开机自启

存储备份的机器10.69.112.77

在/data/data目录下能看到133上创建的100个文件

 

/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制

  • max_user_watches:设置inotifywait或inotifywatch命令可以监控的文件数量
  • max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
  • max_queued_events:设置inotify实例事件队列可容纳的事件数量

优化

echo “50000000” > /proc/sys/fs/inotify/max_user_watches

echo “50000000” > /proc/sys/fs/inotify/max_queued_events

sersync功能:

  • 配置文件
  • 真正的守护进程socket
  • 可以对失败文件定时重传
  • 第三方的HTTP接口
  • 默认多线程同步

 10.69.112.78(推送端)sersync

一.下载sersync源码包

wget sersync2.5.4_64bit_binary_stable_final.tar.gz

二.创建sersync目录结构

# mkdir /usr/local/sersync

# mkdir /usr/local/sersync/conf

# mkdir /usr/local/sersync/bin

# mkdir /usr/local/sersync/log

# tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz

# cd GNU-Linux-x86/

# cp confxml.xml /usr/local/sersync/conf

# cp sersync2 /usr/local/sersync/bin

三.配置sersync

 1.首先创建连接rsyncd的密码文件

# echo "hongpeng" >/etc/rsync.password

# chmod 600 /etc/rsync.password

 2.配置confxml.xml

# cd /usr/local/sersync/conf

# vim confxml.xml

3.创建推送端sersync同步目录

# mkdir /data

 

4.设置环境变量:

# echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile

# source /etc/profile

 

5.启动sersync

# sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

注:重启操作如下:

# killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

 

6.设置开机启动

# echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local

这里面有个坑,备份服务器(10.69.112.77)上/data目录的属主属组一定得和/etc/rsyncd.conf里面的uid、gid一样,否则不能同步。

http://liubao0312.blog.51cto.com/2213529/1677586

转载于:https://www.cnblogs.com/hongpeng0209/p/5944891.html

你可能感兴趣的文章
深度剖析Reges.Match
查看>>
做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk
查看>>
浅谈 easyui tabs 的href和content属性
查看>>
【STL】Message Flood(set)
查看>>
关于技术趋势,写给奋斗中的程序员们
查看>>
批处理警惕等号前面的空格
查看>>
计算思维
查看>>
用 NodeJS 实现 BigPipe
查看>>
Orange's笔记(1)
查看>>
python集合,深浅copy
查看>>
java 图片处理工具类
查看>>
gearman简介及安装使用
查看>>
login.php织梦进不去,dedecms后台登录成功后进入不了后台的最终解决方法
查看>>
php二维数据签名验证,sing 签名验证
查看>>
matlab实验四循环结构程序设计,MATLAB实验四_循环结构程序设计.doc
查看>>
oracle dataguard详细,Oracle 11G DataGuard重启详细过程
查看>>
墨刀linux桌面版,深度商店应用Kedis、微信开发者工具、UltraEdit、墨刀
查看>>
xgad加密linux,一种机载XGA视频信息采集的设计与实现.pdf
查看>>
c语言 扑克牌大小,C语言实现简易扑克牌游戏
查看>>
android sqlite3 加密,Android SQLite文件加密
查看>>