1、rsync的基础概述

1、什么是备份

相当于给源文件增加一个副本,但是备份只会备份当前状态的数据,当你在写数据是,不会备份新写入的数据,除非自己手动在备份一次。

2、为什么要做备份

1、需要备份一些重要的数据

2、防止误操作,防止数据丢失

3、数据被删除,还能快速恢复数据

3、能不能不做备份?

可以,不重要的数据可以不做备份,但是重要的数据建议做备份,以防万一

4、备份使用什么方法?

全量备份:每次都是完全拷贝,效率低下

增量备份:每次仅备份发生改变的文件,效率高

5、备份使用的工具有哪些?

**本地备份:cp

远程备份:scp rsync sz rz **

6、rsync 远程同步工具

实现主机与主机之间的同步,实现增量的同步。

ps: 如果将rsync当一个服务来使用,则需要知道 'rsync' 是一个 c/s 架构

7、rsync 传输模式

1、本地传输 ----> cp

2、远程传输 ----> scp

3、守护进程 ---->

  1. #等价于cp命令
  2. Local: rsync [OPTION...] SRC... [DEST]
  3. 命令 选项 目标
  4. [root@backup ~]# rsync -avz anaconda-ks.cfg /tmp/
  5. #远程传输
  6. Access via remote shell:
  7. 上传 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
  8. 命令 选项 系统用户 主机IP 目标位置
  9. 1.我要将我本地的那个文件,推送至那台服务器的那个目录,使用的是什么用户
  10. [root@backup ~]# rsync -avz ./backup_file root@172.16.1.31:/opt/
  11. root@172.16.1.31's password: #输入31的root密码
  12. 下载 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  13. 命令 选项 系统用户 主机IP
  14. 2.我要下载那个主机的那个目录下的文件,使用的是什么系统用户. 然后下载到我本地的那个位置
  15. [root@backup ~]# rsync -avz root@172.16.1.31:/opt/backup_file ./file.txt
  16. root@172.16.1.31's password: #输入31的root密码
  17. 目录: /etc/ /etc 区别?
  18. #推送/etc目录下的所有文件
  19. [root@backup ~]# rsync -avz /etc/ root@172.16.1.31:/opt
  20. #推送/etc目录以及目录下的所有文件
  21. [root@backup ~]# rsync -avz /etc root@172.16.1.31:/opt
  22. Rsync借助SSH协议同步数据存在的缺陷 ( 使用对端主机的用户名和密码 系统 )
  23. 1.使用系统用户(不安全)
  24. 2.使用普通用户(会导致权限不足情况)
  25. 问题:
  26. 1.rsync -avz /etc/ root@172.16.1.31:/opt ---> 172.168.1.31
  27. 2.路径问题
  28. 3.普通用户权限
  29. 守护进程模式--->一直在后台持续的运行
  30. ccess via rsync daemon:
  31. Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
  32. Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

2、配置rsync,简单使用rsync进行备份

  1. 1.安装
  2. [root@backup ~]# yum install rsync -y
  3. 2.配置 ( 改变程序运行轨迹 )
  4. [root@backup ~]# cat /etc/rsyncd.conf
  5. uid = rsync
  6. gid = rsync
  7. port = 873
  8. fake super = yes
  9. use chroot = no
  10. max connections = 200
  11. timeout = 600
  12. ignore errors
  13. read only = false
  14. list = false
  15. auth users = rsync_backup
  16. secrets file = /etc/rsync.passwd
  17. log file = /var/log/rsyncd.log
  18. #####################################
  19. [backup]
  20. comment = welcome to oldboyedu backup!
  21. path = /backup
  22. 3.根据配置创建一些初识环境:
  23. 3.1创建rsync用户 rsync程序需要rsync这个用户来运行
  24. [root@backup ~]# groupadd rsync
  25. [root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
  26. [root@backup ~]# id rsync
  27. uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
  28. 3.2 虚拟用户 /etc/rsync.passwd username:password
  29. [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
  30. [root@backup ~]# chmod 600 /etc/rsync.passwd
  31. 3.3 创建一个/backup目录
  32. [root@backup ~]# mkdir /backup
  33. [root@backup ~]# chown -R rsync.rsync /backup/
  34. 4.启动
  35. [root@backup ~]# systemctl start rsyncd
  36. [root@backup ~]# systemctl enable rsyncd
  37. 5.检测
  38. [root@backup ~]# netstat -lntp | grep 873
  39. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 8616/rsync
  40. 6.使用
  41. Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
  42. [root@nfs ~]# rsync -avz ./anaconda-ks.cfg rsync_backup@172.16.1.41::backup
  43. Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
  44. [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
  45. 7.客户端每次都需要使用密码?
  46. 1.设定变量 RSYNC_PASSWORD (后面写脚本的时候)
  47. [root@nfs ~]# export RSYNC_PASSWORD=123456
  48. [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
  49. 2.提前准备一个文件 (只有密码的文件), 然后使用 --password-file 指定位置
  50. [root@nfs ~]# echo "123456" > /etc/rsync.pass
  51. [root@nfs ~]# chmod 600 /etc/rsync.pass
  52. [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.pass
  53. 8.-avz 这些选项 怎么理解?
  54. -a #归档模式传输, 等于-tropgDl
  55. -v #详细模式输出, 打印速率, 文件数量等
  56. -z #传输时进行压缩以提高效率
  57. -r #递归传输目录及子目录,即目录下得所有目录都同样传输。
  58. -t #保持文件时间信息
  59. -o #保持文件属主信息
  60. -p #保持文件权限
  61. -g #保持文件属组信息
  62. -l #保留软连接
  63. -D #保持设备文件信息
  64. -P #显示同步的过程及传输时的进度等信息
  65. -L #保留软连接指向的目标文件
  66. -e #使用的信道协议,指定替代rsh的shell程序
  67. --exclude=PATTERN #指定排除不需要传输的文件模式
  68. --exclude-from=file #文件名所在的目录文件
  69. --bwlimit=100 #限速传输
  70. --delete #让目标目录和源目录数据保持一致
  71. 9. --delete 这个参数 (让目标目录和源目录数据保持一致) 危险?
  72. #推: 源有什么,目标就有什么
  73. [root@nfs ~]# rsync -avz /root/ rsync_backup@172.16.1.41::backup --delete
  74. #拉: 目标主机有什么, 本地就有什么
  75. [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup ./ --delete
  76. 10.--bwlimit 限速, 这个参数? 1000 125MB/s
  77. 虚拟机最高的峰值 25MB/s 5MB/s ---> 取决于实际的情况
  78. 单位=KB
  79. [root@nfs ~]# rsync -avzP --bwlimit=5120 ubuntu-18.04.1-desktop-amd64.iso rsync_backup@172.16.1.41::backup
  80. sending incremental file list
  81. ubuntu-18.04.1-desktop-amd64.iso 159,186,944 8% 5.12MB/s 0:05:41
  82. 11.--exclude 这个参数 --exclude-from ?
  83. [root@nfs ~]# rsync -avzP --exclude-from=pc.txt rsync://192.168.0.128/yu
  84. [root@nfs ~]# cat pc.txt
  85. centos/
  86. code/
  87. docker-ce/
  88. epel/
  89. git/
  90. java/
  91. jenkins/
  92. kubernetes/
  93. mongodb/
  94. mysql/
  95. node/
  96. non-supported/
  97. php/
  98. python/
  99. redis/
  100. sonarqube/
  101. windowstools/
  102. zabbix/
  103. CentOS-7-x86_64-DVD-1810.iso
  104. CentOS-Base.repo
  105. docker-ce.repo
  106. epel.repo
  107. nginx.repo
  108. php.repo
  109. rsync_exclude.txt
  110. zabbix.repo
  111. 各种源使用说明.txt
  112. 12.使用rsync同步学校内网yum源?
  113. mysql/
  114. nginx/
  115. php/

3、实现一个备份的案例(rsync 怎么去备份?)

  1. 已知3台服务器主机名分别为web01backup nfs主机信息见下表:
  2. 角色 外网IP(NAT) 内网IP(LAN) 主机名
  3. WEB eth0:10.0.0.7 eth1:172.16.1.7 web01
  4. NFS eth0:10.0.0.31 eth1:172.16.1.31 nfs
  5. Rsync eth0:10.0.0.41 eth1:172.16.1.41 backup
  6. 客户端: web nfs
  7. 服务端: backup

1、客户端需求

  1. 1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02
  2. 2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02
  3. 3.客户端最后将备份的数据进行推送至备份服务器
  4. 4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
  5. 4.客户端每天凌晨1点定时执行该脚本

2、服务端需求

  1. 1.服务端部署rsync,用于接收客户端推送过来的备份数据
  2. 2.服务端需要每天校验客户端推送过来的数据是否完整
  3. 3.服务端需要每天校验的结果通知给管理员
  4. 4.服务端仅保留6个月的备份数据,其余的全部删除
  5. 注意:所有服务器的备份目录必须都为/backup
  6. 快递: 散货-------->打包--->标记------->装车-------------->运输------------->仓库
  7. 验货-------->评价
  8. 系统: 备份的文件-->打包--->校验值----->备份至本地目录---->网络-------->推送至备份服务器
  9. 管理员校验-->通知--->邮件
  10. 1.你需要备份什么?
  11. /etc/fstab /etc/hosts /etc/passwd /var/spool/cron/
  12. 2.你要备份到哪里?
  13. /backup/nfs_172.16.1.31_2018-09-02
  14. IP: ifconfig eth1 | awk 'NR==2 {print $2}'
  15. host: hostname
  16. date: date +%F
  17. 3.你要推送到哪里?
  18. 172.16.1.41

3、客户端配置

  1. [root@nfs ~]# mkdir /scripts
  2. [root@nfs ~]# cat /scripts/clinet_push_data_server.sh
  3. ------------------------------------------------------------------------------
  4. #!/usr/bin/bash
  5. # variables == 变量 ---> 一个固定的字符串表示一个不固定的值
  6. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  7. Src=/backup
  8. Host=$(hostname)
  9. Addr=$(ifconfig eth1 | awk 'NR==2 {print $2}')
  10. Date=$(date +%F)
  11. Dest=${Host}_${Addr}_${Date}
  12. #1.准备对应的备份目录
  13. [ -d $Src/$Dest ] || mkdir -p $Src/$Dest
  14. #2.将文件拷贝至备份目录
  15. cd / && \
  16. [ -f $Src/$Dest/sys.tar.gz ] || tar czf $Src/$Dest/sys.tar.gz etc/fstab etc/hosts etc/passwd && \
  17. [ -f $Src/$Dest/other.tar.gz ] || tar czf $Src/$Dest/other.tar.gz var/spool/cron/ scripts/ && \
  18. #3.添加标记
  19. [ -f $Src/$Dest/flag_${Date} ] || md5sum $Src/$Dest/*.tar.gz > $Src/$Dest/flag_${Date}
  20. #4.推送数据至远程仓库
  21. export RSYNC_PASSWORD=123456
  22. rsync -avz $Src/ rsync_backup@172.16.1.41::backup
  23. #5.保留本地最近7天的数据
  24. find $Src/ -type d -mtime +7 | xargs rm -rf
  25. #批量的模拟数据
  26. [root@nfs ~]# for i in {1..30};do date -s "201909$i"; sh /scripts/clinet_push_data_server.sh ; done

4、服务端配置

  1. #1.服务端配置邮件功能
  2. [root@backup /]# yum install mailx -y
  3. [root@backup /]# vim /etc/mail.rc #跳转至最后一行,然后进入编辑模式
  4. set from=发件人@qq.com
  5. set smtp=smtps://smtp.qq.com:465
  6. set smtp-auth-user=发件人@qq.com
  7. set smtp-auth-password=xxxx
  8. set smtp-auth=login
  9. set ssl-verify=ignore
  10. set nss-config-dir=/etc/pki/nssdb/
  11. #2.测试一下是否能发送成功
  12. mail -s "测试一下" 收件人@qq.com < /etc/hosts
  13. #3.编写脚本
  14. [root@backup ~]# cat /scripts/check_data_notify.sh
  15. #!/usr/bin/bash
  16. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  17. Src=/backup
  18. Date=$(date +%F)
  19. #1.校验每天客户端推送过来的flag数据
  20. md5sum -c ${Src}/*_${Date}/flag_${Date} >${Src}/result_${Date}
  21. #2.邮件通知管理员
  22. mail -s "Rsync Backup ${Date}" 收件人@qq.com < ${Src}/result_${Date}
  23. #3.保留最近180天的数据
  24. find $Src/ -type d -mtime +180 | xargs rm -rf

定时任务是否有问题

  1. 客户端
  2. [root@nfs ~]# crontab -l
  3. #定时备份数据
  4. */1 * * * * sh /scripts/clinet_push_data_server.sh &>/dev/null
  5. 服务端
  6. [root@backup ~]# crontab -l
  7. #定时校验备份的结果
  8. */1 * * * * sh /scripts/check_data_notify.sh &>/dev/null

如何在增加一台客户端备份

  1. [root@web01 ~]# rsync -avz root@172.16.1.31:/scripts /

rsync的简介及使用的更多相关文章

  1. Rsync服务

    第1章 Rsync开篇介绍 1.1 rsync的定义 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windo ...

  2. Linux命令rsync使用总结

    详细用法见:https://www.cnblogs.com/oboth-zl/articles/10334754.html rsync命令简介 主要用于数据同步.备份和镜像,除了本地使用之外,也可以通 ...

  3. centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步

    目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务 ...

  4. centos 配置rsync+inotify数据实时同步2

    一.Rsync服务简介 1. 什么是Rsync 它是一个远程数据同步工具,它在同步文件的同时,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“rsync算法”来使本地和远程两个主机 ...

  5. rsync 参数说明及使用参数笔记

    第1章 rsync 命令简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据镜像同步备份的优秀工具. 1.1.1 语法格式 三种模式: 1)本地模式 rsync [选项] ...

  6. 两台Linux服务器之间复制文件

    一.scp 1.简介 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的 2.软件安装 ...

  7. [转帖]rsync简介

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

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

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

  9. 001.Rsync简介及使用

    一 基础知识 1.1 简介 Rsync是Linux系统中的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上.rysnc不仅仅能对不同位置的文件和目录进行同步,还可以差异计 ...

随机推荐

  1. [追热点]Rust学习资源整理

    为什么选择Rust 在一次演讲中,谈到微软为解决相应内存问题所做的工作,微软研究人员 Matthew Parkinson 提到了微软正在开发的基于 Rust 的新编程语言 Verona. 摘自:[Ru ...

  2. C lang:Array_Multidimensional arrays

    #include<stdio.h> #include<windows.h> #define YEARS 5 #define MONTHS 12 void color(short ...

  3. sqlserver的表变量在没有预估偏差的情况下,与物理表可join产生的性能问题

    众所周知,在sqlserver中,表变量最大的特性之一就是没有统计信息,无法较为准备预估其数据分布情况,因此不适合参与较为复杂的SQL运算.当SQL相对简单的时候,使用表变量,在某些场景下,即便是对表 ...

  4. (办公)记事本_通过xshell连接Liunx服务器

    任务:需要用xshell连接到Liunx服务器,装配环境,放置项目,查看日志,以后就要做,磁盘扩容,均衡负载,以及病毒错误. 第一步,先连接上: 1.xshell新建会话,刚才买的liunx的公网地址 ...

  5. 截取字符串substr和substring两者的区别

    两者有相同点: 如果只是写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段. 不同点:第二个参数: substr(startIndex,lenth): 第二个参数是 ...

  6. C++ std::array 基本用法

    #include <iostream> #include <string> #include <array> using namespace std; // htt ...

  7. 一天两道pat(3)1007,1008

    1007没什么好说的,就是注意暴力求素数的时候,循环到(根号n)+1就好: 重点说说1008,不用新开一个数组就实现循环移位的操作 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下 ...

  8. python文件的使用

    文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容.概念上,文件是数据的集合抽象,类似地,函数是程序的集合和抽象.用文件形式组织和表达数据更有效也更为灵活.文件包括两种类型:文本文件和二进制 ...

  9. 关于java中三种初始化块的执行顺序

    许多小伙伴对于java中的三种初始化块的执行顺序一直感到头疼,接下来我们就来分析一下这三种初始化块到底是怎么运行的.有些公司也会将这个问题作为笔试题目. 下面通过一段代码来看看创建对象时这么初始化块是 ...

  10. Maven使用之packaging类型

    项目的打包类型:pom.jar.war 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系.项目模块化可以将通用的部分抽离出来,方便重 ...