使用 rsync 进行双向同步

2024-04-16

我有一个文件夹 a/ 和一个远程文件夹 A/。 我现在在 Makefile 上运行类似的内容:

get-music:
 rsync -avzru server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music

当我制作同步音乐时,它首先获取从服务器到本地的所有差异,然后相反,将所有差异从本地发送到服务器。

仅当将来有更新或新文件时,此功能才非常有效。如果有删除,则不会执行任何操作。

在 rsync 中,有 --delete 和 --delete-after 选项来帮助完成我想要的,但事实是,它不适用于 2 路同步。

如果我想删除syn上的服务器文件,当本地文件被删除时,它可以工作,但是如果由于某种原因(稍后解释)我有一些文件不在服务器中但存在于本地并且它们被删除了,我想在本地删除它们而不是服务器复制(正如它所发生的那样)。

问题是我有 3 台机器:

  1. desktop
  2. notebook
  3. 家庭服务器

因此,有时,服务器会有通过笔记本同步删除的文件,例如,当我与桌面(已删除的服务器文件仍然存在)运行同步时,我希望这些文件被删除而不是被删除。再次复制到服务器。

我想这只有通过数据库和操作跟踪才能实现:P

有更简单的解决方案吗? 谢谢。


尝试齐奏:http://www.cis.upenn.edu/~bcpierce/unison/ http://www.cis.upenn.edu/%7Ebcpierce/unison/

Syntax:

unison dirA/ dirB/

Unison 会询问当文件不同时该怎么做,但您可以使用以下接受默认(不冲突)选项的命令来自动化该过程:

unison -auto dirA/ dirB/

unison -batch dirA/ dirB/根本不问任何问题,并写入输出有多少文件被忽略(因为它们冲突)。

注意:我不再使用 Unison(我使用 NextCloud,它不能解决原始用例)。但请注意rsync不是为双向同步而设计的,而unison is. unison可能有它的错误(就像任何其他软件一样)和它的缺陷。我很惊讶它现在似乎得到了积极的维护(上次我看的时候我想我认为它看起来已经死了),但我不确定现在的状态如何。我不需要双向文件同步器,因此可能有更好的选择。

注2:我现在正在使用Mutagen https://mutagen.io/出于某些目的。它仍然没有完全涵盖问题的用例,但它确实实现了双向同步。

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

使用 rsync 进行双向同步 的相关文章

  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • Realloc 和 sscanf 到一个函数中

    我有一个文件 里面有num行 每一行包含一个数字 我想将每个数字保存到一个向量中 vet 为什么这段代码不起作用 Segmentation fault core dumped 我认为错误是sscanf in save numbers功能 但
  • iPhone - 从网络服务器获取文件的上次修改日期

    我想检查网络服务器上文件的上次修改日期 任何帮助都会很棒 谢谢 NSURLRequest request NSURLRequest alloc initWithURL aURL NSHTTPURLResponse response NSUR
  • 同步用户控件中多个属性的绑定

    我的 WPF 用户控件有一个丑陋的竞争条件 它是某种扩展的 ComboBox UserControl主要定义了两个可绑定的DependencyProperties 一个是选中项 另一个是一个列表 可以从列表中选择选中项 两者都是可绑定的 因
  • 打印出每一行(从文件中)并带有行号python [重复]

    这个问题在这里已经有答案了 我有一个 txt包含一些单词的文档 每个单词都在不同的行上 例如 hello too me 我试图弄清楚如何打印每一行以及每个单词所在的行号 但从 1 开始 而不是 0 所需的输出 1 hello 2 too 3
  • 通过文件名通配符打开文件

    我有一个文本文件目录 所有文件的扩展名都是 txt 我的目标是打印文本文件的内容 我希望能够使用通配符 txt指定我希望打开的文件名 我正在思考类似的事情F text txt 分割文本文件的行 然后打印输出 这是我想做的一个例子 但我希望能
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • 同步2个具有不同模式的数据库

    我们有一个使用通用表设计的标准化 SQL Server 2008 数据库 因此 我们没有为每个实体 例如产品 订单 订单项等 使用单独的表 而是使用通用表 实体 实例 关系 属性等 我们决定建立一个单独的非规范化数据库来快速检索数据 您能否
  • 在 Android 上使用 FileOutputStream 创建的文件在哪里?

    我在代码中创建了一个文件 如下所示 FileOutputStream fOut openFileOutput samplefile txt MODE WORLD READABLE OutputStreamWriter osw new Out
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 使用 TcpClient 通过 C# 通过 TCP 发送多个文件

    我正在尝试使用 C TcpClient 通过 TCP 发送多个文件 对于单个文件来说它效果很好 但是当我有多个文件时 它只发送第一个文件 这是我的代码 发送文件 try TcpClient tcpClient new TcpClient N
  • Java IO 文件前缀字符串太短 - 但事实并非如此

    尝试从一个目录创建简单的 tar gz 文件 有我的代码 File destinationFile new File var www swOfflineFeeds Companies 2 File sourceFile new File v
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • .bat 文件将文件排序到文件夹中

    对于我的图片集 我希望文件夹中的所有图片按日期自动分类到文件夹中 幸运的是 这些文件已经以时间戳命名 2012 07 15 12 21 06 jpg 2012 07 15 12 21 26 jpg 2012 07 16 12 12 50 j
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with
  • Child_process 处理带有回车符 (\r) 的 STDOUT 流

    我正在编写一个简单的应用程序 它允许工作中的内部系统请求从远程服务器到使用 REST 调用发起的另一个远程服务器的复制过程 使用 rsync 我已经对express框架足够熟悉 并且刚刚开始尝试child process库 并偶然发现了一个
  • 拒绝访问特定目录中的特定文件类型

    对于某些应用程序 用户可以上传自己的文件 由于这可能是非常大的文件 因此他们可以通过自己的 FTP 客户端上传这些文件 当然 我不希望他们上传一些可以访问服务器上所有其他文件的 PHP 文件 我想要防止这种行为的方法之一是拒绝仅访问这些文件
  • 打开/尝试读取文件[重复]

    这个问题在这里已经有答案了 我尝试简单地读取文本文件的内容并将其存储到数组中 但是 ins open file txt r array for line in ins array append line ins close 它给了我一个 打
  • 用 while 循环打开文件 - C [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 各位程序员大家好 我的问题不大 我不知道如何打开具有不同数字 在文件名中 的文件 从 1 到存在的任意数量的文件 例如 我有两个 或最
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件

随机推荐