当前位置: 首页 > article >正文

Rsync远程同步

目录

一、Rsync简介

概述

Rsync特性

二、Rsync同步源服务器

三、配置rsync下

目录

一、Rsync简介

概述

Rsync特性

二、Rsync同步源服务器

三、配置rsync下行同步(定时同步)

 配置服务端

客户端 

 格式

同步备份源

免交互

定时同步

 四、Rsync上行同步(实时同步)

定期同步的不足

实时同步的优点

Linux内核的inotify机制

发起端配置rsnc+inotify

 配置rsync上行同步

五、使用Rsync快速删除大量文件

验证

总结


一、Rsync简介

概述

     rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

      rsync 的官方站点的网址是 rsync.samba.org/,目前最新版本是 3.1.3,由 Wayne Davison 进行维护。作为一种最常用的文件备份工具,rsync 往往是 Linux 和 UNIX 系统默 认安装的基本组件之一。

Rsync特性

  • 支持拷贝特殊文件,如连接文件、设备等。
  • 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
  • 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
  • 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
  • 可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
  • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
  • 支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。

二、Rsync同步源服务器

在远程同步任务中,负责发起 rsync 同步操作的客户机称为发起端,而负责响应来自客户机的 rsync 同步操作的服务器称为同步源。

  • 在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。
  • 在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

三、配置rsync下行同步(定时同步)

服务器主机ip
源服务器192.168.247.140
客户机192.168.247.110

 配置服务端

关闭防火墙

systemctl stop firewalld  

setenforce 0

查看rsync服务

rpm -q rsync  #一般已默认安装rsync

修改/etc/rsyncd.conf 配置文件

#如采取匿名的方式,只要将其中的“auth users” 和 “secrets file” 配置项去掉即可。

 保证所有用户对源数据目录/var/www/html都有读取权限

  创建数据文件,输入用户和密码

 启动rsync服务

 rsync --daemon

查看进程

 #关闭rsync服务

kill $(cat /var/run/rsyncd.pid) 
rm -rf /var/run/rsyncd.pid

客户端 

 格式

rsync   [选项]    原始位置    目标位置

选项作用
-r递归模式,包含目录及子目录中的所有文件
-l对于符号链接文件仍然复制为符号链接文件
-v显示同步过程的详细(verbose)信息
-v在传输文件时进行压缩(compress)
-a归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgop"
-p保留文件的权限标记
-t保留文件的时间标记
-g保留文件的属组标记(仅超级用户使用)
-o保留文件的属主标记(仅超级用户使用)
-H保留硬连接文件
-A保留ACL属性信息
-D保留设备文件及其他特殊文件
--delete删除目标位置有而原始位置没有的文件
--checksum根据校验和(而不是文件大小、修改时间)来决定是否跳过文件

同步备份源

格式一:用户名@ip::共享模块名    

rsync -avz  backuper@192.168.247.99::myhtml /opt/ky/

格式二:rsync://用户名@IP/共享模块名 

rsync -avz rsync://backuper@192.168.247.99/myhtml /opt/ky/
#backuper指在同步时用的用户身份   #myhtml为共享模块名    #/opt/ky/指的是同步到本地的目录


rsync -avz -e 'ssh -p ssh端口号'   原始位置    目标位置

rsync -avz -e 'ssh -p 22'  root@192.168.247.99:/var/www.html/ /opt/ky/

服务端拷点文件进来

 客户端这边多出了

免交互

 在客户端创建密码文件,密码文件权限必须为600,除了属主,其他人都没有查看权限

服务端拷个文件过来 

 客户端不用输密码就可以登录,可以看到文件已经过来了

定时同步

crontab -e  

 重启服务,查看状态

 四、Rsync上行同步(实时同步)

定期同步的不足

  • 执行备份的时间固定,延迟明显、实时性差
  • 当同步源长期不变化时,密集的定期任务是不必要的

实时同步的优点

  • 一旦同步源出现变化,立即启动备份
  • 只要同步源无变化,则不执行备份

Linux内核的inotify机制

  • 从版本2.6.13开始提供
  • 可以监控文件系统的变动情况,并做出通知响应
  • 辅助软件:inotify-tools

发起端配置rsnc+inotify

  • 使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
  • 将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。
  • 因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

 配置rsync上行同步

1、修改rsync源服务器配置文件

vim /etc/rsyncd.conf

 干掉进程,然后重启服务

 修改目录权限

2、调整inotify内核参数

  • max_queue_events:监控事件队列大小(默认值为16384)
  • max_user_instances:最多监控实例数(默认值为128)
  • max_user_watches:每个实例最多监控文件数(默认值为8192)

当要监控的目录、文件数量较大或者变化较为频繁时,建议加大这三个参数的值

 vim /etc/sysctl.conf

 检查下

3、安装inotify-tools

用inotify 机制还需要安装inotify-tools, 以便提供inotifywait、 inotifywatch 辅助工具程序,用来监控、汇总改动情况。

  • inotifywait:可监控modify (修改)、create (创建)、move (移动)、delete (删除)、attrib ( 属性更改)等各种事件,一有变动立即输出结果。
  • inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。

将安装包拉进来

 解压缩安装包

 tar zxvf inotify-tools-3.14.tar.gz -C /opt/

编译安装

./configure

make && make install

执行inotifywait命令,然后开启另一个新终端向/opt/kgc目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。

 inotifywait -mrq -e modify,create,move,delete /opt/kgc

选项

  • -e:用来指定要监控哪些事件
  • -m:表示持续监控
  • -r:表示递归整个目录
  • -q:简化输出信息

 在发起端,编写触发式同步脚本

在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)。

 加上权限

 运行脚本(后台运行)

cd /opt/

./inotify.sh &

现在发起端上传,删除文件,源服务器都能看到

 如果同步的文件比较大,同步时比较慢导致后面文件没来的及同步,则需要在脚本内添加消息队列或缓冲:

五、使用Rsync快速删除大量文件

假如要在linux下删除大量文件,比如100万、1000万,像/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf * 可能就不好用了,因为要等待很长一段时间。

在这种情况下我们可以使用rsync来巧妙处理。rsync实际用的是替换原理。

1、先创建两个文件夹

2、在ky26文件夹中生成大量文件

批量删除文件

  1. 选项说明:
    --delete-before  接收者在传输进行删除操作
    -a  归档模式,表示以递归方式传输文件,并保持所有文件属性
    -H  保持硬连接的文件
    -v  详细输出模式
    --progress   在传输时显示传输过程
    --stats   给出某些文件的传输状态

后面/不能少

验证

ky26文件夹里已经空了

总结

rsync效率高,功能强大,非常适合做异地容灾


http://www.kler.cn/a/7285.html

相关文章:

  • Essential Cell Biology--Fifth Edition--Chapter one (8)
  • Linux:进程的优先级 进程切换
  • 走进嵌入式开发世界
  • 嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
  • 基于opencv制作GUI界面
  • 第二十一周机器学习笔记:动手深度学习之——数据操作、数据预处理
  • 黑客在供应链攻击中破坏 3CX 桌面应用程序
  • 大数据与互联网的结合
  • 复旦微ZYNQ7020全国产替代方案设计
  • 10道关于垒球规则的判断题·你答对了多少
  • 形式语言总结
  • Vue中的slot插槽
  • 管理科学与工程案例分析:企业战略管理
  • 【 第六章 拦截器,注解配置springMVC,springMVC执行流程】
  • 高级威胁的攻击和防护A P T
  • Java基础——Set集合实现类
  • 50家公司Java,C++招聘要求
  • Redis学习
  • Office 2016安装包与教程
  • 敏捷工具.敏捷项目的可视化
  • STC的官网,是我永远忘不掉的炼丹炉
  • 反应持续时间:一种灵活、免费的心理科学工具
  • Git知识点及常用命令介绍—2023.04
  • MySQL基础-变量/流程控制/游标/触发器
  • 【深度学习】P1 神经网络、监督学习与深度学习、深度学习的驱动力量
  • Linux-简易shell