C/C++教程

rsync远程同步

本文主要是介绍rsync远程同步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

rsync(Remote Sync,远程同步)

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

在远程同步任务中,负责发起rsync同步操作的客户机称为起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

配置rsync源服务器

 

 

 

 

 

 

 发起端:

基本格式:rsync [选项] 原始位置 目标位置

 

 

常用选项

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 ##免交互格式配置

 rsync实时同步:

定期同步的不足:

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

实时同步的优点:

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

发起端配置rsync+inotify

使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便的实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生改变,则立即启动增量备份操作:否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。

因为inotify通知机制有Linux内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

 

 

 

 

 2、调整inotify内核参数

在Linux内核中,默认的inotify机制提供了三个调整参数:max_queue_events(监控事件队列,默认值为16384)、max_user_instances(最多监控实例数,默认值128)、max_user_watches(每个实例最多监控文件数,默认值8192)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。

 

 

 

 

 

 3、安装inotify-tools

用inotify机制还需要安装inotify-tools,以便提供inotifywait、inotifywatch辅助工具程序,用来监控、汇总改动情况。notifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。

 

 

 

 

 

 

 

 

 

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

4、在另外一个终端编写触发式同步脚本

 

 使用rsync来实现快速删除大量文件

rm -rf * 删除大量文件可能需要很长时间,rsync可以巧妙的处理,rsync实际用的是替换的原理

 

 

 选项说明:

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

 

这篇关于rsync远程同步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!