首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux rsync双向同步

Linux rsync双向同步基础概念

rsync 是一个用于在本地和远程之间进行文件和目录同步的工具。它支持快速增量传输,能够高效地处理大文件和大量小文件的同步。双向同步意味着两个目录之间的内容会相互保持一致,任何一方的更改都会反映到另一方。

相关优势

  1. 高效性:rsync使用增量传输算法,只传输变化的部分,大大减少了数据传输量。
  2. 灵活性:支持多种传输协议(如SSH、本地文件系统等)。
  3. 安全性:可以通过加密通道(如SSH)进行安全传输。
  4. 可配置性:提供了丰富的选项来定制同步行为。

类型与应用场景

  • 本地同步:在同一台机器的不同目录之间同步文件。
  • 远程同步:在不同机器之间通过网络同步文件。
  • 双向同步:适用于需要实时保持两个目录内容一致的场景,如备份服务器、开发环境与生产环境的同步等。

实现双向同步的方法

可以使用 lsyncd 或者编写自定义脚本来实现rsync的双向同步。

使用lsyncd

lsyncd 是一个基于lua脚本和inotify的实时同步工具,它可以监控文件系统的变化并自动触发rsync同步。

代码语言:txt
复制
# 安装lsyncd
sudo apt-get install lsyncd

# 配置lsyncd
# 创建一个新的配置文件 /etc/lsyncd/lsyncd.conf.lua
settings {
    logfile = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/run/lsyncd/lsyncd.status"
}

sync {
    default.rsyncssh,
    source = "/path/to/source",
    host = "remote_host",
    targetdir = "/path/to/target",
    exclude = { "/tmp/**" },
    rsync = {
        archive = true,
        compress = true,
        verbose = true
    },
    ssh = {
        port = 22,
        user = "username"
    }
}

自定义脚本

编写一个bash脚本来实现双向同步,可以使用 inotifywait 来监控文件变化。

代码语言:txt
复制
#!/bin/bash

SOURCE_DIR="/path/to/source"
REMOTE_DIR="/path/to/target"
REMOTE_USER="username"
REMOTE_HOST="remote_host"

function sync_to_remote() {
    rsync -avz --delete $SOURCE_DIR $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR
}

function sync_from_remote() {
    rsync -avz --delete $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $SOURCE_DIR
}

inotifywait -m -r -e modify,create,delete $SOURCE_DIR | while read path action file; do
    sync_to_remote
    ssh $REMOTE_USER@$REMOTE_HOST "sync_from_remote"
done &

遇到的问题及解决方法

问题1:同步过程中出现延迟或卡顿

原因:可能是由于网络带宽不足或者同步的文件数量巨大。

解决方法

  • 增加网络带宽。
  • 使用 --bwlimit 选项限制rsync的传输速率。
  • 减少同步的文件数量,例如通过更精确的 --exclude 选项排除不必要的文件。

问题2:同步后文件权限或时间戳不一致

原因:rsync默认情况下可能不会保留文件的权限和时间戳。

解决方法

  • 使用 -a(归档模式)选项来保留文件的权限、时间戳等信息。
  • 或者使用 --chmod--chown 选项显式设置权限和所有者。

问题3:双向同步导致文件冲突

原因:当两个目录同时修改同一个文件时,可能会导致冲突。

解决方法

  • 使用版本控制系统(如Git)来管理文件,避免直接冲突。
  • 在脚本中添加逻辑来检测和处理冲突,例如通过文件锁或者自定义的冲突解决策略。

通过上述方法和配置,可以实现高效且可靠的双向同步。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux rsync 同步软件

说明 源服务器 192.168.1.100 目标服务器 192.168.1.101 源服务器的文件拷贝到目标服务器 安装rsync 源服务器和目标服务器都需要安装rsync yum安装 yum -y install...rsync 源码安装 待更新 rsync 配置参数说明 uid = nobody #进行备份的用户 nobody为任何用户 gid = nobody #进行备份的组 nobody为任何组 use chroot...connections参数的锁文件 log file = /var/log/rsyncd.log #日志文件 [rsyncd_one] # 这里是认证的模块名 path = /root/test #参与同步的目录...chmod 600 /etc/rsyncd.secrets 启动rsync (守护进程方式) /usr/bin/rsync --daemon 如果服务器上装有防火墙,得需要在服务器的iptables中开启...-vzurtopg --progress /root/test2 root@192.168.1.100::rsyncd_one rsync解释参数 v 表示详细提示 z 表示压缩 u 表示只进行更新

2.8K30

Linux之rsync数据同步服务

rsync是一个开源、快速的、多动能的、可以实现全量,增量的本地或远程数据同步备份工具,它适用于多种操作系统平台。...1、rsync的特性(功能) (1)支持拷贝特殊文件(如链接文件、设备文件) (2)拷贝时可以排除目录中目录或文件不需要同步的功能 (3)可以保持源文件或目录的属性不发生改变 (4)可以实现全量、增量的同步功能...、传输效率比较高 (5)可以使用scp、ssh、rsh等方式配合使用 (6)可以通过socke传输方式来同步数据 (7)支持匿名或认证(无需系统用户)的进和模式来进行传输同步数据 2、rsync的工作方式...跳过已经存在于接收器上的更新文件 --remove-source-files sender removes synchronized files (non-dirs)    #发送方删除同步文件...See http://rsync.samba.org/ for updates, bug reports, and answers 3、rsync同步命令格式 (1)本地主机 Local: rsync

5.1K40
  • Linux之rsync数据同步服务

    1.Rsync基本概述 Rsync是开源多功能同步工具,支持多种操作系统 Rsync支持本地复制(优于scp,cp)与远程同步 Rsync支持全量备份,增量备份 Rsync基于C/S架构,默认监听tcp873...安全方式传输,Rsync本身不对数据加密,使用ssh作为传输端口。 指定排除文件,排除无需同步的文件或目录。 进程方式同步,rsync运行在C/S架构,通过进程方式传输文件或数据。....缺点: 1.大量小文件同步会比较慢,需要比对时间较长,可能造成Rsync进程停止 解决思路:将小文件进行打包,然后再同步,减小比对时间,传输效率更高 2.同步大文件会出现中断情况,而且长时间同步会造成网络资源耗尽...解决思路:配置限速同步,未同步完之前修改为隐藏文件,同步完后修改为正常文件 Rsync命令格式: rsync [选项] 源文件 [user@]host::目录 rsync [选项] 源文件 rsync...password=/etc/rsync.pass //执行数据同步的密码文件 user=admin //执行数据同步的用户名 inotifywait=/usr/bin/inotifywait $inotifywait

    1.6K20

    Linux文件同步工具之rsync

    通过了解,Linux的同步命令rsync命令可以实现文件同步。这里指的文件同步就是将jenkins工作目录下面的文件同步到我们指定的目录(如我们nginx配置的项目目录)。...并且rsync同步命令具备,高效、带宽消耗低、支持复制链接、设备、属主、属组、权限等。 命令介绍 rsync是远程(或本地)复制和同步文件最常用的命令。...借助rsync命令,你可以跨目录,跨磁盘和跨网络远程与本地数据进行复制和同步。举例来说:在两台Linux主机之间进行数据备份和镜像。...本文介绍在Linux主机上进行远程和本地传输文件的常见用法,不需要root账户也可以允许rsync。 rsync命令特点 1.高效地复制同步数据到对端,或者对端到本地。...,而不是全量同步。

    3.5K10

    linux之rsync远程同步文件

    rsync全名Remote Sync,是类unix下数据镜像的备份工具。可以方便的实现本地,远程备份文件,rsync最重要的一点是支持增量备份。 命令语法 rsync [OPTION]......one-file-system 不要跨越文件系统边界 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是 700 字节 -e, --rsh=COMMAND 指定使用 rsh、ssh 方式进行数据同步...将jdk.tar.gz拷贝到rumenz目录 > rsync -avhz jdk.tar.gz rumenz 将src目录拷贝到rumenz目录 将/opt/src 目录下的文件同步发送到rumenz...将本地/opt/src/目录下 所有文件同步备份到远程 /opt/rumenz/ 目录 > rsync -avhz /opt/src/ root@rumenz.com:/opt/rumenz/ 将本地.../opt/src/目录同步备份到远程 /opt/rumenz/ 目录 > rsync -avhz /opt/src root@rumenz.com:/opt/rumenz/ 将远程/opt/rumenz

    1.9K10

    Linux下使用rsync同步文件

    遇到的问题是几台游戏服务器,有一台新的服务器之前已经copy(Linux的scp命令)过文件上去,但在测试的过程中发现还是图片无法正常不显示出来,然后用httpwatch去分析请求的资源,发现有一个图片请求的地址是...为了不至于再copy一次,就需要使用文件同步的管理软件了,同事推荐了linux下的rsync,小试了一下,还是很不错的。...假设有服务器A 和 服务器B,现在登录了服务器B,需要将服务器A上的文件同步到服务器B中,将A中有的B中没有的,或是A中文件比B中的文件要新就全部copy过来。...rsync  --help去查看了,这里从其它人写的博客中转载过来的。...参考了: rsync参数详解 rsync 使用说明 使用之前需要先安装rsync,这个直接自行搜索吧..

    3.5K20

    Linux系统rsync数据同步服务介绍

    Linux系统rsync数据同步服务介绍 rsync是一种开源、快速的、多功能的、可以实现全量、增量的本地或远程数据同步备份工具,它适用于多种操作系统平台 一:rsync的特性(功能 ) 1、支持拷贝特殊文件...6、可以通过socke传输方式来同步数据 7、支持匿名或认证(无需系统用户)的进和模式来进行传输同步数据 二:rsync的工作方式 1、主机本地的传输,类似于cp命令 2、借助于SSH服务来传输数据...3、以守护进程的方式来传输数据 三:rsync同步命令格式 1、本地主机 Local: rsync [OPTION...]...,/tmp/text/与/tmp/text这两个的区别,前者是同步目录下的内容,后者是连同当前目录一同同步 2、借助SSH服务 Access via remote shell: Pull: rsync.../etc/hosts,同步两个文件的内数据 测试推送数据 [root@Centos text]# rsync -avzP /etc/hosts -e "ssh -p 22" root@192.168.1.3

    1K20

    linux 远程数据同步工具 命令:rsync

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。...rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。...rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。 语法 rsync [OPTION]... SRC DEST rsync [OPTION]......SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 对应于以上六种命令格式,rsync有六种不同的工作模式...-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。

    1.9K00

    Linux下数据自动同步之rsync

    Windows下数据自动备份同步之Rsync  http://www.linuxidc.com/Linux/2014-01/95722.htm 一、实验环境 服务端:Linux CentOS 6.0...(192.168.1.220) 客户端1:Linux Centos 6.0 (192.168.1.96) 客户端2:windows 7 (192.168.1.97) -----------------...chmod 600 /etc/rsyncd.pw mkdir /root/test 同步数据: rsync -vzrtopg --progress --delete bakweb@192.168.1.220...递归 -t表示保持原文件创建时间 -o表示保持原文件属主 -p表示保持原文件的参数 -g表示保持原文件的所属组 注:如果您需要定期同步数据,把上面同步数据的命令增加到 crontab 里定时同步即可哈...的客户端也安装在这个盘上,所以我是切换到该目录下,调用rsync.exe 程序来同步的哦;您得根据您的实际情况,进行相应调整; 注:如果您需要定时同步数据的话,写一个 .bat文件,放在安装目录的bin

    1.5K10

    Linux Rsync 增量同步与快速删除

    增量同步 rsync [args] SRC [DEST]情形:同时维护着两份不同的data_center,但以old_data_center为标准。...因为权限的缘故没有开启rsync自动同步,只是每隔一段时间手动同步一下。...SRC和DEST都是采用mount形式,如果每一次都完整地copy,耗时很长,这时候就想到采用增量同步的方法,因为两份data_center同时由不同人维护,所以内容略有不同,data_center同步的时候不光要完全同步...快速删除大量文件 先建一个空目录,随便位置 mkdir /local/empty_dir 用rsync删除目标目录 rsync --delete-before -avH --progress /local...清空时自动保持之前的目录权限,如下: rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/ 为什么rsync这么快呢?

    3.1K10

    Rsync远程同步

    rsync简介: rsync是一款优秀的、快速的、多平台的本地或远程数据镜像同步备份工具。适用于Unix/Linux/Windows等多种平台。...在同步备份时,默认情况下,rsync通过其独特的quick check算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需指定参数)甚至是只同步一个文件里有变化的内容部分...,所以,可以实现快速的同步数据的功能。...-avz -P /etc/ /tmp/      仅同步etc目录里的内容,etc本身不同步        rsync -avz -P /etc /tmp/      把etc和etc里面的内容全部考到...rsync --daemon rsync+inotify实现触发式自动同步,inotify端创建或者一个文件rsync备份源也自动创建一个一模一样的文件,inotify删除一个文件rsync备份源也自动删除文件

    80910

    rsync - Linux下进行文件同步命令

    rsync是Linux下进行文件同步到一个命令,可以同步两台计算机到文件与目录,利用查找文件中到不同块以减少数据传输。...rsync的基本用法 $ rsync [options] src dest 1、目的端和源端文件内容不同,触发同步 2、rsync不同步文件到”modify time”,进行同步到文件,目的端到”modify...rsync你需要它帮你同步文件夹的话,它是不会主动承担的,这也正是rsync的懒惰之处。...3、–delete-after:默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。...rsync服务器架设 可以架设rsync服务器,rsync以守护进程运行,客户端将rsync指令写成一个shell脚本,通过crontab定期执行脚本,以实现服务器和客户端间特定文件或目录到同步,这样就不需要你每次手动同步来

    8.4K70

    Linux 使用 rsync 文件远程同步操作

    通过了解,Linux的同步命令rsync命令可以实现文件同步。这里指的文件同步就是将jenkins工作目录下面的文件同步到我们指定的目录(如我们nginx配置的项目目录)。...并且rsync同步命令具备,高效、带宽消耗低、支持复制链接、设备、属主、属组、权限等。 命令介绍 rsync是远程(或本地)复制和同步文件最常用的命令。...借助rsync命令,你可以跨目录,跨磁盘和跨网络远程与本地数据进行复制和同步。举例来说:在两台Linux主机之间进行数据备份和镜像。...本文介绍在Linux主机上进行远程和本地传输文件的常见用法,不需要root账户也可以允许rsync。 rsync命令特点 1.高效地复制同步数据到对端,或者对端到本地。...,而不是全量同步。

    2.4K10

    rsync工具介绍, rsync常用选项,rsync通过ssh同步

    rsync工具介绍: 默认reync 命令不存在,需要用yum安装一下。 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。...rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。...rsync常用选项: -a 包含-rtplgoD  -r 同步目录时要加上,类似cp时的-r选项  -v 同步时显示一些信息,让我们知道同步的过程  -l 保留软连接  -L 加上该选项后,同步软链接时会把源文件给同步...rsync -avL --delete   备份的同时删除目标目录里面所有的文件 rsync -avL  --exclude  同步目录的同时过滤出目录里面的文件,可以写多个过滤条件 rsync通过ssh...同步: rsync /etc/passwd 192.168.182.129:/tmp/aming.txt    把当前机器的目录同步到另外一台机器里面(格式) rsync -avP 192.168.182.129

    2.9K50
    领券