Linux 同步工具rsync 文件目录同步,增量备份的手段之一

2023-11-14

一、rsync介绍

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

它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜像。 [1] 

 

二、使用rsync

rsync同步工具的常用选项:

  • -n:测试同步过程,不做实际修改
  • --delete:删除目标文件夹内多余的文档
  • -a:归档模式,相当于-rlptgoD
  • -v:显示详细操作信息
  • -z:传输过程中启用压缩/解压

0.安装:

centos: yum -y install rsync xinetd

 ubuntu: apt install rsync xinetd
#rsync服务通常基于超级守护进程xinetd管理的方式来实现,因此需要事先安装rysnc和xinetd 

1.rsync同步基本操作

     1)同步整个目录

rsync -a /boot /opt 

                    [root@svr7 opt]# rsync -a /boot /opt 

                    [root@svr7 opt]# ls /opt

                       boot             

     2)将目录下的文件同步到被同步目录

实际上就是加'/'与不加'/'的区别

rsync -a /boot/ /opt/

                    [root@svr7 opt]# rsync -a /boot/ /opt/

                    [root@svr7 boot]# ls
                         config-3.10.0-862.el7.x86_64
                         efi
                         grub
                         grub2 

   

2.验证 -a、-v、-n、--delete 选项的含义

        1) 验证-a选项

         当同步对象是文件夹时,若缺少-a或-r选项则文件夹会被忽略,即同步失败

           [root@svr7 opt]# mkdir /test

            [root@svr7 opt]# touch /test/a.txt  

           [root@svr7 opt]# rsync /test/  /opt
              skipping directory boot 

            [root@svr7 opt]# ls    //无文件

            [root@svr7 opt]# rsync /test/a.txt  /opt       //不加选项只能以文件为同步单位,不能以目录

            [root@svr7 opt]# ls    

              a.txt

            [root@svr7 opt]# rm -rf /opt/*                         //清空文件夹

            [root@svr7 opt]# rsync -a /test/ /opt            //-a 也可以替换成-r  效果是一样的

            [root@svr7 opt]# ls
               a.txt

          当目录1中的数据出现权限、归属、修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,也需要-a选项。            

             [root@svr7 test]# ll /opt /test
               /opt:
             -rw-r--r-- 1 root root 0 8月   1 09:54 a.txt

               /test:
             -rw-r--r-- 1 root root 0 8月   1 09:53 a.txt
             [root@svr7 test]# chmod o+x /test/a.txt       //修改文件权限
             [root@svr7 test]# ll /test/a.txt
             -rw-r--r-x 1 root root 0 8月   1 09:53 /test/a.txt        

             [root@svr7 test]# rsync /test/a.txt /opt       //不加-a选项 进行同步
             [root@svr7 test]# ll /test /opt              
              /opt:  
             -rw-r--r-- 1 root root 0 8月   1 10:00 a.txt      //opt下a.txt权限没有变化

              /test:
            -rw-r--r-x 1 root root 0 8月   1 09:53 a.txt      

             [root@svr7 test]# rsync -a  /test/a.txt /opt          //加入-a选项
             [root@svr7 test]# ll /opt /test
              /opt:    
             -rw-r--r-x 1 root root 0 8月   1 09:53 a.txt          //权限变化

             /test:
            -rw-r--r-x 1 root root 0 8月   1 09:53 a.txt
      

        

 结论:   只要做rsync同步操作,都需要加上-a选项,事实证明任何情况下加-a 都是适用的

    2) 验证-v选项        
            添加-v选项时,可以看到操作细节信息

             [root@svr7 opt]# rsync -av /test/  /opt
              sending incremental file list
              ./
              a.txt

              sent 106 bytes  received 38 bytes  288.00 bytes/sec
              total size is 0  speedup is 0.00
 

      3) 验证-n选项

             将-n、-v选项合用,可以模拟同步过程,显示需要做哪些操作(但并不真的同步)。                               

            [root@svr7 opt]# rm -rf /opt/*        //删除文件下内容,避免干扰测试 

            [root@svr7 opt]# rsync -avn /test/ /opt
             sending incremental file list
              ./
              a.txt

             sent 99 bytes  received 25 bytes  248.00 bytes/sec
             total size is 0  speedup is 0.00 (DRY RUN)
             [root@svr7 opt]# ls          //无文件 

 

     结论: -n 选项仅仅用于测试,与-v选项连用模拟同步过程     

4) 验证--delete选项

     rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加—delete选项。

        [root@svr7 opt]# ls  /opt      //查看opt和test目录 根据delete选项描述 同步之后opt下的b.txt 将被删除 
           b.txt
        [root@svr7 opt]# ls /test
           a.txt 

        [root@svr7 opt]# rsync -a --delete /test/ /opt         //添加delete选项 注意delete要加双-

         [root@svr7 opt]# ls  /opt       //再次查看 /opt下的b.txt被删除 而同步了test目录下的a.txt
          a.txt
        [root@svr7 opt]# ls /test
           a.txt 

   结论: 加delete选项后 目录1和目录2的数据完全同步,目录2下多余的文件将被删除

 

三、rsync+SSH同步

rsync+SSH远程同步操作:

  • rsync [...] user@host:远程目录 本地目录
  • rsync [...] 本地目录 user@host:远程目录

准备两台虚拟机svr7(192.168.4.7),pc207(192.168.4.207)    

1.列出远程主机的SSH资源

rsync root@192.168.4.7:/    

[root@pc207 ~]# rsync root@192.168.4.7:/                //列出根目录下文件
Warning: Permanently added '192.168.4.7' (ECDSA) to the list of known hosts.
root@192.168.4.7's password:                                    //输入密码
dr-xr-xr-x          4,096 2019/08/01 09:53:13 .
lrwxrwxrwx              7 2019/01/26 12:33:13 bin
-rw-r-----          1,705 2019/07/17 09:56:21 etc.bak
-rw-r--r--             10 2019/07/23 14:20:46 file1
-rw-r--r--             10 2019/07/23 14:20:46 hdfile
lrwxrwxrwx              7 2019/01/26 12:33:13 lib
lrwxrwxrwx              9 2019/01/26 12:33:13 lib64
-rw-r-----          1,705 2019/07/17 09:56:30 named.bak
lrwxrwxrwx              8 2019/01/26 12:33:13 sbin
.............................

2. rsync+SSH同步操作

rsync -av -e "ssh -p 22" 同步目录 被同步目录

[root@svr7 opt]# ls /test      //主机svr7下一个文件
   a.txt 

[root@pc207 ~]# rsync -a  root@192.168.4.7:/test/  /opt     //将svr7下文件同步到 pc207的opt目录下,将远程目录同步到本机目录

Warning: Permanently added '192.168.4.7' (ECDSA) to the list of known hosts.
root@192.168.4.7's password:                                    //输入密码

[root@pc207 ~]# ls /opt

    a.txt

[root@pc207 ~]# rsync -a  /opt/  root@192.168.4.7:/test/   //将本机文件同步到远程目录

 

3. rsync 免密模式 ,通过公钥 私钥,完成ssh,rsync无密码验证

  这里有 两台虚拟机AB,每台机器上有自己的私钥,A将公钥私钥给B就可以免密登录B机器了(但是B仍然无法免密登录A)

[root@svr7 /]# ssh-keygen       #一路回车
[root@svr7 /]# ls /root/.ssh/      #公钥  私钥生成位置

[root@svr7 /]# ssh-copy-id root@192.168.4.207  #传输公钥到虚拟机B

[root@svr7 /]# ssh root@192.168.4.207            #直接登录无需密码

[root@svr7 /]# rsync -a   /opt root@192.168.4.207:/opt -e 'ssh'   //将本地文件同步到远程 

 

四、增量备份 

这里只提一下思路,我们可以写一个sh脚本挂在后台(通过加&),使用inotifywait来监控要备份的文件,触发rsync的条件是该文件发生变化,或者通过对比前后变化的文件大小值,当大于某个值时进行备份,或者通过sleep控制间隙时间,两者的目的都是尽可能释放CPU和内存的占用。

另一种较简单,写一个定时任务即可,可以时每天的晚上12点或其他...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 同步工具rsync 文件目录同步,增量备份的手段之一 的相关文章

  • 清理systemd日志

    systemd journal之于systemd犹如syslog之于init 其日志文件保存在 var log journal目录下 随着时间的流逝 该目录下会积累大量日志文件 占用不少的磁盘空间 如果硬盘容量较小或可用空间紧张 可以考虑清
  • 如何在命令行中使用 ftp 命令上传和下载文件

    转摘 https linux cn article 6746 1 html 本文中 介绍在 Linux shell 中如何使用 ftp 命令 包括如何连接 FTP 服务器 上传或下载文件以及创建文件夹 尽管现在有许多不错的 FTP 桌面应用
  • 海德拉 暴力破解ssh密码

    上一篇博客写到怎么有效地防护ssh密码遭到暴力破解 今天给大家介绍下如何暴力破解ssh密码 作为一名云计算工程师 懂得如何防护比如何攻击更重要 hydra是世界顶级密码破解工具 支持几乎所有协议的在线密码破解 密码能否被破解取决于密码字典是
  • linux环境下设置用户密码过期期限

    关于密码过期时间和用户过期时间的设置 通常使用chage命令和usermod命令 设置某个用户的过期时间 accountexpires 可以用usermod e来设置 查看某个用户的密码 passwordexpires 过期时间等信息 可以
  • centos7搭建pptp

    1 检查是否支持 终端输入 modprobe ppp compress 18 echo yes 返回 yes 表示支持 pptp 2 安装组件 yum install epel release y yum install ppp iptab
  • 链接库的时候,提示load shared libraries error,xxx file too short

    该问题主要是提示 load shared libraries error xxx file too short 软连接链接问题 原因 程序链接的动态库中有软连接 但是软连接没有 l 标识 被识别成了实际的动态库文件 软连接文件又太小 所以就
  • linux中的shebang

    1 读作shebang或者sha bang 2 通常在unix系统的脚本的第一行开头使用 3 指明执行这个脚本文件的解释程序 4 步骤 使用which查询python3的解释器所在的路径 which python3 修改要运行的主pytho
  • Linux系统图形界面和命令行界面之间的切换

    一 系统不在虚拟机中的情况 使用ctrl alt F1 6切换到命令行界面 ctrl alt F7切换到图形界面 二 系统在虚拟机中的情况 Ctrl Alt shift F1 6切换到命令行界面 使用Alt F7返回到图形界面 注 以上方法
  • Ubuntu20.04通过rsync和inotify实现定时备份与实时备份

    通过rsync和inotify实现定时备份与实时备份 为了避免主服务单点故障 可以将数据备份到远程备份机器 可以使用rsync工具同步Jenkins home到远程 可以利用rsync工具的 exclude from FILE 功能 定制一
  • Linux修改hostname的几种方式,及遇到的问题

    之前修改主机名全都是采用的network方式 今天遇到点问题 发现hostname并非之前理解的那样 自己配置hostname的问题 这与系统的版本有关系么 腾讯云7 5的 百度云的是6 5 我自己在VMware上安装的6 5就没 etc
  • Linux基础之SQLite数据库

    嵌入式数据库篇 一 SQLite数据库 二 SQLite数据库安装 三 SQLite的命令用法 四 打开 创建数据库的C接口 五 C代码执行sql语句 六 C代码建表和插入数据 七 总结 一 SQLite数据库 1 简介 轻量化 易用的嵌入
  • 缺少更新 GCloud 上静态 ReactJS 站点的步骤

    人们可能会认为简单地替换与应用程序关联的存储桶中的内容就会更新应用程序 但事实并非如此 I have a site that I deployed yesterday I created the bucket then in the com
  • 每次使用 Rsync 保存时上传文件

    我使用 Eclipse PDT Ubuntu 10 10 进行 Web 开发 并使用 Rsync 手动成功上传更改的文件 rsync e ssh av home goksel Sites test email protected test
  • bash trap 不会忽略信号

    请考虑这个 bash 脚本 bin bash trap INT echo sleep sleep 5 echo rsync rsync a usr lib var tmp 正如预期的那样 尝试使用 ctrl c 中断睡眠失败 但是rsync
  • 使用 rsync+ssh+公钥作为与 ssh 密钥所有者不同的用户同步本地和远程目录

    目标是通过 ssh 同步本地和远程文件夹 我当前的用户是user1 并且我通过 ssh 对服务器进行了无密码访问设置server1 我想将本地文件夹与上的文件夹同步server1借助于rsync公用事业 通常我会运行 rsync rtvz
  • rsync 无法解释的错误(代码 129)

    我正在尝试将数据从一台服务器 rsync 到另一台服务器 大约有大约 1 1T 的数据 但是当我进行 rsync 时 我在传输过程中遇到以下异常 从而终止了进程 rsync 错误 rsync c 541 sender 3 0 7 出现无法解
  • 检查 rsync 命令是否运行成功

    以下 bash 脚本每小时执行一次文件夹的 rsync bin bash rsync r z c home pi queue email protected cdn cgi l email protection home foobar rm
  • 使用 php 脚本中的 rsync 同步本地和远程文件夹,无需输入密码

    如何在 php 脚本中使用 rsync 同步本地和远程文件夹而不提示输入密码 我已经设置了一个公钥来自动为我的用户登录远程服务器 所以从 cli 上运行没有任何问题 rsync r a v e ssh l user delete local
  • Rsync 仅创建符号链接

    我目前 rsync 运行良好 它将我的所有文件从一个目录复制到另一个目录 唯一的事情是它是物理复制文件 我有很多大文件 我不想拥有所有文件的副本 我只想在新目录中创建一个符号链接 以便我可以在网页上提供数据 源目录中有一些我不希望公众看到的
  • 使用 rsync 进行双向同步

    我有一个文件夹 a 和一个远程文件夹 A 我现在在 Makefile 上运行类似的内容 get music rsync avzru server media 10001 music media Incoming music put musi

随机推荐

  • 一点整理

    1 美国在2010年以后开始流行数字化转型的 在2010年以前 2006年社交网络FB YOU 在2004 2006 Web2 0热之前 企业是无法直接触达到每个消费者的 2006年Amazon电子商务 这个是我瞎凑的 但因为是在线交易所以
  • 入门Python必备100道练习题

    给大家整理了这份今天给大家分享100道Python练习题 在此之前 先给大家推荐一个工具 是一个对 Python 运行原理进行可视化分析的工具 Python Tutor 点击 Next 按钮就会根据执行步骤显示原理 对新手理解代码运行原理有
  • C++day01

    一 C 简介 本贾尼 斯特劳斯特卢普 于1979年4月在贝尔实验室负责分析UNIX系统的内核的流量情况 希望有一款更加模块化的工具 于1979年10月开始着手开发一种新的编程语言 在C语言的基础上增加了面向对象机制 这就是C 的来历 在19
  • 从量子物理到AI医疗,这位清华博士后想用十年弥补病理医生的"百年缺口"

    大数据文摘出品 作者 易琬玉 根据WHO下属 国际癌症研究机构 公布的最新全球癌症数据报告 2018年全球新增癌症诊断病例约1910万 死亡病例约960万 约1 5男性和1 6女性在一生中会罹患癌症 1 8男性和1 11女性因癌症而死亡 对
  • 安全应急响应案例

    1 产生背景 1988年11月发生的莫里斯蠕虫病毒事件 Morris Worm Incident 致使当时的互联网络超过10 的系统不能工作 该案件轰动了全世界 并且在计算机科学界引起了强烈的反响 为此 1989年 美国国防部高级研究计划署
  • linux系统ipcclean命令,Linux学习笔记29——IPC状态命令

    一 IPC IPC是进程间通讯 在前面 我们相继学习了进程间通讯机制有信号量 内存共享 消息队列 状态命令 ipcs 和删除命令 ipcrm 提供了一种检查和清理IPC机制的方法 二 状态命令 1 显示信号量状态用ipcs s 2 显示共享
  • 华为OD机试真题- 狼羊过河【2023Q2】【JAVA、Python、C++】

    题目描述 一农夫带着m只羊 n只狼过河 农夫有一条可载x只狼 羊的船 农夫在时或者羊的数量大于狼时 狼不会攻击羊 农夫在不损失羊的情况下 运输几次可以完成运输 返程不计入次数 输入描述 输入参数为 m n x m 为羊的数量 n为狼的数量
  • nodeJS入门(四)之身份验证

    身份验证 一 bcrypt模块 1 1 简单介绍一下 1 2 安装 1 3 加密 二 身份验证 2 1 session 会话 2 1 1 session实现身份验证的思路 2 1 2 session的业务流程 2 1 3 express s
  • QT学习总结

    转眼间工作已经三个月了 实习期也已经满了 在这三个月中 对qt的学习遇到了很多问题 也解决了很多问题 也留下了一些现在的未解之谜 在工作中关于qt的一些东西也需要进行一些记录 QT Creator对大于带有两个空格的目录和中文命名的目录不支
  • cv2.error: OpenCV(4.6.0) /io/opencv/modules/imgcodecs/src/grfmt_exr.cpp:103: error

    问题描述 cv2 error OpenCV 4 6 0 io opencv modules imgcodecs src grfmt exr cpp 103 error 213 The function feature is not impl
  • 数据库服务器配置参数修改,数据库服务器参数配置

    数据库服务器参数配置 内容精选 换一换 云搜索服务 Cloud Search Service 为用户提供结构化 非结构化文本的多条件检索 统计 报表 本章节介绍如何通过CDM将本地Elasticsearch整库迁移到云搜索服务中 流程如下
  • 如何在GitHub的repository中建立文件夹

    GitHub的repository无法直接建立文件夹 需要曲线建立 第一步 创建新的repository 若已有repository可直接将其打开 第二步 在repository界面右上角选择创建新文件 create new files 不
  • 费曼技巧学习笔记

    博主狂言 技巧正文 技巧的详细步骤 技巧步骤一 技巧步骤二 技巧步骤三 技巧的提纲总结 费曼技巧可以解决的问题 费曼技巧的另一种描述四步学习法 步骤一 步骤二 步骤三 步骤四 博主读后感 博主狂言 初识费曼技巧 甚是熟悉 博主自认有那么一点
  • 基于Springboot实现Kafka消费数据

    本文介绍使用Kafka监听和订阅两种不同方式进行数据消费 1 配置文件 spring kafka bootstrap servers 192 168 1 16 9092 消费者 consumer group id alarmService
  • MySQL check table/optimize table/analyze table/REPAIR TABLE

    check table 检查InnoDB和MyIsam是否有错误 检查表或者视图是否存在错误 对 MyISAM 和 InnoDB 存储引擎的表有作用 对于 MyISAM 存储引擎的表进行表检查 也会同时更新关键字统计数据 CHECK TAB
  • 《ios零基础教程》-- ”Mac OS X的介绍”和一些“基础语法” 2014-3-18总结

    一 学前须知 讲的ios和c语言的一些发展历史 作为了解即可 二 Mac OS X简单介绍 讲的是对苹果电脑的一些操作和基础了解 感觉蛮有用的 以前都是用的windows 突然用这种高富帅装备 还真不习惯 装个软件都费劲 看了这个之后 对m
  • 1 Centos7安装(jdk8)Tomcat9并设置为开机启动

    一 安装过程 cd usr local src wget http mirrors hust edu cn apache tomcat tomcat 9 v9 0 12 bin apache tomcat 9 0 12 tar gz 可以下
  • 面试余额宝Java技术岗(1-4面题目):GC+spring+二叉树+Dubbo+线上调优+​​​​数据库索引+mq

    余额宝一面 JVM 内存分哪几个区 每个区的作用是什么 JVM有哪些回收算法 对应的收集器有哪些 GC 的两种判定方法 CMS 收集器与 G1 收集器的特点 hashmap源码问题 HashMap HashMap如何保证线程安全 Concu
  • Aix6.1下安装SWFTools

    该文章参考http tech sxinfo net jctj article do curMenu 14 childMenu 16 articleId 388 再结合我在实际上在Aix6 1上的安装经验来编写 相关文件的下载 ftp ftp
  • Linux 同步工具rsync 文件目录同步,增量备份的手段之一

    一 rsync介绍 rsync是linux系统下的数据镜像备份工具 使用快速增量备份工具Remote Sync可以远程同步 支持本地复制 或者与其他SSH rsync主机同步 它的特性如下 可以镜像保存整个目录树和文件系统 可以很容易做到保