与rsync双向同步

问题描述 投票:94回答:10

我有一个文件夹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

[当我制作sync-music时,它首先将所有差异从服务器发送到本地,然后将相反的内容从本地发送到服务器。

仅当将来只有更新或新文件时,此方法才能很好地工作。如果有删除,则不执行任何操作。

在rsync中,有--delete和--delete-after选项可以帮助完成我想要的操作,但事实是,在2向同步中它不起作用。

如果要删除syn上的服务器文件,则删除本地文件后,它可以工作,但是如果由于某种原因(稍后说明),我有一些不在服务器中但在本地存在的文件,并且删除,我想在本地删除它们,而不是服务器复制(发生这种情况)。

我在上下文中有3台机器:

  1. 桌面
  2. 笔记本
  3. 主服务器

因此,有时,服务器将具有通过笔记本同步删除的文件,然后,当我与台式机运行同步时(已删除的服务器文件仍然存在),我希望删除这些文件而不是再次复制到服务器。

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

任何更简单的解决方案?谢谢。

file sync rsync two-way
10个回答
62
投票

尝试Unison:http://www.cis.upenn.edu/~bcpierce/unison/

语法: unison dirA/ dirB/

Unison询问文件不同时该怎么办,但是您可以通过使用以下接受默认(无冲突)选项的自动化操作:

unison -auto dirA/ dirB/

[unison -batch dirA/ dirB/]完全不问任何问题,并写输出忽略了多少文件(因为它们有冲突)。


8
投票

您也可以尝试bitpocket:https://github.com/sickill/bitpocket


5
投票

您可能使用Osync:http://www.netpower.fr/osync,它基于rsync并具有智能删除传播功能。它还具有多个选项,例如恢复暂停执行,软删除和时间控制。


5
投票

由于最初的问题还涉及台式机和笔记本电脑以及涉及音乐文件的示例(因此,他可能正在使用GUI),所以我还要提到迄今为止最好的双向,多平台,免费和开源程序之一:FreeFileSync

它是基于GUI的,非常快速且直观,具有过滤功能和许多其他选项,包括远程连接,查看和交互式管理“冲突”(例如,具有类似时间戳的文件)以及在双向传输之间切换的功能,镜像等等。


4
投票

尝试一下,

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

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

sync-music: get-music put-music

我只是测试了一下,对我有用。我正在Windows7(使用安装了rsync软件包的cygwin)和FreeNAS文件服务器(FreeNAS在预装了rsync软件包的FreeBSD上运行)之间进行2路同步。


3
投票

您可以尝试csync,它是owncloud之下的同步引擎。


1
投票

我正在使用SparkleShare https://www.sparkleshare.org/

可在Mac,Linux和Windows上使用。


0
投票

我不确定它是否可用于两个同步,但要使--delete正常工作,您还需要添加--recursive参数。


0
投票

您可以使用cloudsync使文件夹与遥控器保持同步:

pip install cloudsync
pip install cloudsync-gdrive
cloudsync sync file:c:/users/me/documents gdrive:/mydocs

如果远程是NFS,则可以使用:

cloudsync sync file:c:/users/me/documents/ file:/mnt/nfs/whatevs

-1
投票

Rclone是您要寻找的。 Rclone(“用于云存储的rsync”)是一个命令行程序,用于与不同的云存储提供程序(包括本地文件系统)之间来回同步文件和目录。 Rclone以前称为Swiftsync,自2013年以来一直可用。

© www.soinside.com 2019 - 2024. All rights reserved.