Rsync数据备份工具

1、Rsync简介

Rsync是一款开源的数据备份工具,可以用于不同主机之间同步传输数据,可以实现全量备份和增量备份。

Rsync监听端口:

Rsync工具默认运行在TCP的873端口。

Rsync工作模式:

Rsync三种工作模式:
1.本地模式:不常用,类似cp命令;
2.远程模式:常用,在不同主机之间传输数据;
3.后台服务模式:常用,用于实时同步数据,安全性高。

2、数据备份简介

2.1 数据备份方式

从备份方式来说,数据备份有两种备份方式:
1.全量备份
2.增量备份

全量备份:

Full_backup.png

完全备份,将客户端所有数据内容全部备份至服务端(效率低下,占用空间)。

增量备份:

Incremental_backup.png

增量备份,将客户端数据和服务端数据对比,只备份客户端新增加或者改变的数据至服务端(提高备份效率,节省空间,适合异地备份)。

2.2 数据备份架构

  1. 数据推送(上传):所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)。

Data_upload.png

  1. 数据拉取(下载):所有主机从Rsync备份服务器,拉取备份数据到本地。

Data_download.png

  1. 大量服务器数据备份场景。

Multi_server_data backup

  1. 异地备份场景。

Remote_data_backup

3、Rsync本地模式和远程模式

3.1 安装Rsync工具

安装命令:

//环境准备
client服务器:10.0.0.15
server服务器:10.0.0.16//客户端和服务端都需要安装Rsync工具
yum -y install rsync

3.2 rsync命令选项

-a   //归档模式传输,等于-tropglD
-v  //详细模式输出,显示速率,文件数量等
-z  //传输时进行压缩,提高效率
-r  //递归传输,传输目录,传输目录时目录名称后加"/"表示传输目录下的所有文件
-t  //保持文件时间信息
-o  //保持文件属主信息
-g  //保持文件属组信息
-p  //保持文件权限
-l  //保留软链接
-D  //保持设备文件信息
-P  //显示同步的过程及传输时的进度等信息
-L  //保留软连接指向的目标文件
--delete        //让目标目录和源目录数据保持一致
--bwlimit       //限速传输
--exclude=PATTERN  //指定排除不需要传输的文件模式
--exclude-from=FILE    //排除FILE中指定模式的文件

3.3 本地模式用法

 rsync [OPTION...] SRC... [DEST]示例:
//备份本地文件至其他位置
[root@client ~]# touch file1
[root@client ~]# rsync -avz file1 /tmp/
sending incremental file list
file1sent 83 bytes  received 35 bytes  236.00 bytes/sec
total size is 0  speedup is 0.00[root@client ~]# ls /tmp/
crontab.gjp7fs
file1
ks-script-nc4wzV
systemd-private-a5efc68639ea4045a00fd333479c44be-vgauthd.service-QyLl51
systemd-private-a5efc68639ea4045a00fd333479c44be-vmtoolsd.service-KUA16O
systemd-private-bdfee1d0d79e4d4c83528124b59af5ac-vgauthd.service-yWorJ2
systemd-private-bdfee1d0d79e4d4c83528124b59af5ac-vmtoolsd.service-SBKSbM
yum.log//备份目录时,使目标目录与源目录数据保持一致;若目标目录有多余的文件则会被删除
[root@client ~]# mkdir hzz
[root@client ~]# touch hzz/hzz{1..2}
[root@client ~]# rsync -avz /root/hzz /tmp/
sending incremental file list
hzz/
hzz/hzz1
hzz/hzz2sent 163 bytes  received 58 bytes  442.00 bytes/sec
total size is 0  speedup is 0.00[root@client ~]# ls /tmp/hzz/
hzz1  hzz2
[root@client ~]# touch /tmp/hzz/hzz3
[root@client ~]# ls /tmp/hzz/
hzz1  hzz2  hzz3[root@client ~]# rsync -avz --delete /root/hzz /tmp/
sending incremental file list
deleting hzz/hzz3sent 88 bytes  received 29 bytes  234.00 bytes/sec
total size is 0  speedup is 0.00
[root@client ~]# ls /tmp/hzz/
hzz1  hzz2

3.4 远程模式用法

 rsync [OPTION...] [USER@]HOST:SRC... [DEST]rsync [OPTION...] SRC... [USER@]HOST:DEST示例:
//将本地文件备份至其他主机
[root@client ~]# rsync -avz file1 root@10.0.0.16:/root/
The authenticity of host '10.0.0.16 (10.0.0.16)' can't be established.
ECDSA key fingerprint is SHA256:rTf+awJf/okAhV+47f4pbkueWtE//bqfsTNJmzaw0Rg.
ECDSA key fingerprint is MD5:7a:3e:15:3a:6f:d3:9f:5c:25:d2:73:ae:a2:4c:0b:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.16' (ECDSA) to the list of known hosts.
root@10.0.0.16's password:
sending incremental file list
file1sent 83 bytes  received 35 bytes  15.73 bytes/sec
total size is 0  speedup is 0.00[root@server ~]# ls
anaconda-ks.cfg  file1//将其他主机文件备份至本地
[root@client ~]# rm -rf file1
[root@client ~]# rsync -avz root@10.0.0.16:/root/file1 /root/
root@10.0.0.16's password:
receiving incremental file list
file1sent 43 bytes  received 84 bytes  84.67 bytes/sec
total size is 0  speedup is 0.00[root@client ~]# ls
anaconda-ks.cfg  file1  hzz//传输时限制传输速度
[root@client ~]# dd if=/dev/zero of=/root/1G.txt bs=1024M count=1
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,11.0137 秒,97.5 MB/秒[root@client ~]# rsync -avzP --bwlimit=10 1G.txt root@10.0.0.16:/root/
root@10.0.0.16's password:
sending incremental file list
1G.txt1,073,741,824 100%   10.66MB/s    0:01:36 (xfr#1, to-chk=0/1)sent 1,044,300 bytes  received 35 bytes  9,993.64 bytes/sec
total size is 1,073,741,824  speedup is 1,028.16[root@server ~]# ll -h
总用量 1.1G
-rw-r--r--  1 root root 1.0G 11月 24 10:30 1G.txt
-rw-------. 1 root root 1.3K 11月 23 04:13 anaconda-ks.cfg
-rw-r--r--  1 root root    0 11月 24 10:24 file1注意事项:
//备份数据时,若不限速会导致带宽被占满
rsync -avzP --bwlimit=10 1G.txt root@10.0.0.16:/root///备份目录时,目录名称后不加"/"表示备份整个目录包含目录本身
rsync -avz dir root@10.0.0.16:/root///备份目录时,目录名称后加"/"表示只备份目录中的文件,不备份目录本身
rsync -avz dir/ root@10.0.0.16:/root///使用"--delete"选项时,请注意千万不要写错目标目录的名称
//下面命令会导致目标系统"/"目录被清空
rsync -avz --delete dir root@10.0.0.16:/ root/

4、Rsync服务模式

远程模式在传输数据时使用ssh远程登录,使用的是系统用户(不安全);服务模式以守护进程的方式运行,使用的是虚拟用户,用户不存在操作系统中。

4.1 服务端配置

  • 确保rsync服务已经安装
  • 修改服务配置文件/etc/rsyncd.conf
  • 创建用户以及数据存放目录
  • 创建虚拟用户密码文件并设置权限
  • 关闭防火墙、selinux
  • 重启服务并将服务设置开机自启
  • 检查服务端口是否开启
//安装rsync服务
[root@server ~]# yum -y install rsync//编辑服务配置文件/etc/rsyncd.conf
[root@server ~]# vim /etc/rsyncd.conf
uid = rsync                //运行服务的用户
gid = rsync                //运行服务的组
address = 10.0.0.16            //服务监听地址
port = 873             //服务监听端口
fake super = yes           //服务无需使用root用户身份,即可接收文件的完整属性
use chroot = yes           //禁锢数据目录,不允许跳出
max connections = 4            //最大连接数
timeout = 900              //超时时间
ignore errors               //忽略某些错误信息
read only = false          //客户是否只读
list = false               //不允许查看模块信息
auth users = rsync_hzz         //定义虚拟用户,用户数据传输
secrets file = /etc/rsync.passwd   //定义虚拟用户密码认证文件[backup]              //定义模块名称
path = /backup             //数据存放目录
comment = backup           //模块注释信息//创建用户以及数据存放目录
[root@server ~]# useradd -r rsync
[root@server ~]# mkdir /backup
[root@server ~]# chown -R rsync.rsync /backup//创建虚拟用户密码文件并设置权限
[root@server ~]# vim /etc/rsync.passwd
rsync_hzz:passwd
[root@server ~]# chmod 600 /etc/rsync.passwd//关闭防火墙、selinux
[root@server ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)[root@server ~]# getenforce
Disabled//重启服务并设置服务开机自启
[root@server ~]# systemctl restart rsyncd
[root@server ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.//检查服务端口是否开启
[root@server ~]# ss -anltup | grep "rsync"
tcp    LISTEN     0      5      10.0.0.16:873                   *:*                   users:(("rsync",pid=31344,fd=4))

4.2 客户端配置

  • 客户端也须安装rsync
  • 配置密码文件并设置权限
  • 测试收发数据
//客户端安装rsync
[root@client ~]# yum -y install rsync//配置传输密码
//方法1:将密码写入文件
[root@client ~]# echo 'passwd' > /etc/rsync.pass
[root@client ~]# cat /etc/rsync.pass
passwd
[root@client ~]# chmod 600 /etc/rsync.pass测试收发数据:
[root@client ~]# rsync -avz --password-file=/etc/rsync.pass /root/file1 rsync_hzz@10.0.0.16::backup
sending incremental file list
file1sent 88 bytes  received 43 bytes  262.00 bytes/sec
total size is 0  speedup is 0.00[root@server ~]# ls /backup/
file1//方法2:使用密码环境变量RSYNC_PASSWORD
[root@client ~]# export RSYNC_PASSWORD='passwd'测试收发数据
[root@client ~]# touch file2
[root@client ~]# rsync -avz /root/file2 rsync_hzz@10.0.0.16::backup
sending incremental file list
file2sent 87 bytes  received 43 bytes  260.00 bytes/sec
total size is 0  speedup is 0.00[root@server ~]# ls /backup/
file1 file2

5、Rsync服务模式实战

  1. 客户端每天凌晨3点备份/etc目录至/backup下以"主机名_IP地址_当前时间命名"的目录中
  2. 客户端推送/backup目录下数据备份目录至Rsync备份服务器
  3. 客户端只保留最近七天的备份数据,避免浪费磁盘空间
  4. 服务端部署rsync服务,用于接收用户的备份数据
  5. 服务端每天校验客户端推送过来的数据是否完整,并将结果以邮件的方式发送给管理员
  6. 服务端仅保留6个月的备份数据

注意:所有服务器的备份目录均为/backup,所有脚本存放目录均为/scripts。

服务端部署rsync服务:

[root@server ~]# mkdir /scripts
[root@server ~]# vim /scripts/rsync_server.sh
#!/bin/bash
#安装rsync服务
yum -y install rsync
#配置rsync服务
cat > /etc/rsyncd.conf << EOF
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = yes
max connections = 4
timeout = 900
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
[backup]
path = /backup
comment = backup
EOF
#创建服务用户,创建数据备份目录并设置权限
useradd -r rsync
mkdir /backup
chown -R rsync.rsync /backup
#生成数据传输用户密码文件并设置权限
echo "rsync_backup:passwd" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
#设置服务开机自启,并重启服务
systemctl enable rsyncd
systemctl restart rsyncd[root@server ~]# chmod +x /scripts/rsync_server.sh [root@server ~]# /scripts/rsync_server.sh

客户端备份数据并推送至rsync服务器:

[root@client ~]# mkdir /scripts
[root@client ~]# vim /scripts/etc_backup.sh
#!/bin/bash
#客户端安装rsync
yum -y install rsync
#配置rsync客户端虚拟用户密码
export RSYNC_PASSWORD='passwd'
#创建备份目录
mkdir -p /backup/$(hostname)_$(ip addr show ens36 | awk -F '[ /]+' 'NR==3 {print $3}')_$(date "+%F")
#打包备份/etc目录下的数据至备份目录中
tar -zcf /backup/$(hostname)_$(ip addr show ens36 | awk -F '[ /]+' 'NR==3 {print $3}')_$(date "+%F")/etc_backup.tar.gz /etc/
#计算备份文件的校验值
md5sum /backup/$(hostname)_$(ip addr show ens36 | awk -F '[ /]+' 'NR==3 {print $3}')_$(date "+%F")/etc_backup.tar.gz > /backup/$(hostname)_$(ip addr show ens36 | awk -F '[ /]+' 'NR==3 {print $3}')_$(date "+%F")/checksum.txt
#将打包备份好的数据推送到rsync备份服务器
rsync -az /backup/$(hostname)_$(ip addr show ens36 | awk -F '[ /]+' 'NR==3 {print $3}')_$(date "+%F") rsync_backup@10.0.0.16::backup
#删除七天前的备份文件
find /backup/ -mtime +7 | xargs rm -rf[root@client ~]# chmod +x /scripts/etc_backup.sh[root@client ~]# crontab -e
0 3 * * * /scripts/etc_backup.sh

服务端校验数据并将结果以邮件发送给管理员:

//配置邮件服务
[root@server ~]# yum -y install mailx
[root@server ~]# cat > /etc/mail.rc << EOF
set from=2207118234@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=2207118234@qq.com
set smtp-auth-password=xxxxxxxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF//配置脚本校验数据并将结果发送给管理员
[root@server ~]# vim /scripts/checksum.sh
#!/bin/bash
#校验备份数据并将结果发送给管理员
md5sum -c /backup/client_10.0.0.15_$(date "+%F")/checksum.txt | mail -s "/backup/client_10.0.0.15_$(date "+%F")" 2207118234@qq.com
#删除6个月以前的备份数据
find /backup/ -mtime +180 | xargs rm -rf[root@server ~]# chmod +x /scripts/checksum.sh[root@server ~]# crontab -e
0 6 * * * /scripts/checksum.sh

Rsync 数据备份工具相关推荐

  1. Linux数据备份工具

    一.rsync数据备份工具 1.rsync工具简介 rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上. rsync有如下特性: 可以镜像保存 ...

  2. Linux下的数据备份工具rsync

    Linux下的数据备份工具很多,用得最多的是rsyns(远程同步) 同步远程数据类似scp 同步本地数据类似cp root@ip-172-31-8-212:~# rsync /etc/passwd / ...

  3. 你必须要知道的数据备份工具rsync

    你必须要知道的数据备份工具rsync 数据镜像备份工具:rsync 什么是rsync ? rsync 是Linux/UNIX系统下的文件同步工具和数据传输工具,它采用:"rsync算法&qu ...

  4. linux运维笔记:Rsync数据同步工具

    linux运维笔记:Rsync数据同步工具 1-Rsync简介 Rsync英文全称是Remote synchronization,Rsync具有可以使本地和远程两台主机之间的数据快速复制和同步镜像.远 ...

  5. 【基础】:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...

  6. Linux实战教学笔记21:Rsync数据同步工具

    原文地址:https://www.cnblogs.com/chensiqiqi/p/6514315.html 目录 第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsy ...

  7. 数据备份_天津数据备份工具多少钱

    天津数据备份工具多少钱 DFA7G4AH 天津数据备份工具多少钱 参观了解DIDC情况后,江凌表示,市委市一直非常重视工业设计行业的发展,但目前尚无专门针对扶持工业设计的.伴随着制造业的发展,产品零件 ...

  8. 服务器怎么拷贝文件夹下,Syncovery(数据备份工具)如何在windows下远程访问服务器批量拷贝文件?Syncovery图文教...

    Syncovery是一款数据备份工具,能够在pc.mac.服务器.在线存储空间之间同步,并自带FTP,是一款灵活的同步备份工具,并同步Mac电脑,服务器,笔记本电脑,以及在线存储空间,一起来看看具体的 ...

  9. GoodSync 数据自动同步备份工具VS傲梅轻松备份系统数据备份工具 哪款更好?

    备份和同步软件的使用越来越广泛,因为在这个数据驱动的时代,数据的备份和恢复非常重要.在这里我想向大家推荐两款备份和同步软件--GoodSync和傲梅轻松备份. GoodSync是一款备份和同步软件,它 ...

最新文章

  1. 封装一个类搞定90%安卓客户端与服务器端交互
  2. 来自开发者的点赞!网易云信揽获3大技术奖项
  3. 08_Android中的SimpleAdapter的使用
  4. 九个步骤让你成为PHP专家
  5. CSS3及JS媒体查询教程
  6. 小程序 字号设置 slider滚动改变大小_SteerMouse for mac(鼠标设置工具) v5.4.3
  7. 【leetcode 简单】 第六十七题 回文链表
  8. jsf如何与数据库连接_JSF数据库示例– MySQL JDBC
  9. HTML基础整理(From表单)
  10. 计算机组成原理内存模块,计算机组成原理
  11. python自动交易 缠论_缠论自动交易系统实现了
  12. react 翻书效果_react实现页面切换动画效果
  13. matlab 仿真光学实验报告,基于matlab的光学实验仿真毕业论文.doc
  14. Unity使用BMFont制作字体
  15. 苹果拼图软件测试,趣图制作测试——拼图+水印+表情
  16. VideoRender和ImageRender项目中遇到的一些cpp错误
  17. 如何选择隔离电源还是非隔离电源?
  18. 从国土空间规划到智慧城市
  19. MacBook好用的电脑垃圾清理管家工具CleanMyMac X
  20. 对抗攻击方法及论文总结

热门文章

  1. matlab绘图去白边
  2. 基于TensorFlow的歌曲曲风变换
  3. 杭电 oj 异或密码
  4. 【Windows问题解决】 Win10无法打开Wlan,但是驱动正常的解决方案
  5. 安卓-橡皮擦擦线完整实现
  6. 拍照应用竞争升级,坐拥15亿用户的美图如何打好防御战?
  7. python情感词典计算得分_用python进行金融市场文本数据的情感计算!
  8. 消消乐php源码,利用PHP实现开心消消乐的算法示例
  9. 手把手教你用python实现机器学习预测疾病
  10. FST(Finite State Transducers, 有限状态转换器)简介及示例