我有一个文件夹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选项来帮助实现我想要的东西,但事情是,它不适用于双向同步。
如果我想删除syn上的服务器文件,当本地文件被删除时,它可以工作,但如果由于某种原因(后面解释)我有一些不在服务器但在本地存在的文件被删除了,我想在本地删除它们而不是服务器复制(当它发生)。
我在上下文中有3台机器:
因此,有时,服务器将包含使用笔记本同步删除的文件,然后,当我与我的桌面运行同步时(删除的服务器文件仍然存在)我希望删除这些文件,不要再被复制到服务器。
我想这只能用于数据库和操作跟踪:P
任何更简单的解决方案? 谢谢。
答案 0 :(得分:58)
尝试Unison:http://www.cis.upenn.edu/~bcpierce/unison/
语法:
unison dirA/ dirB/
Unison询问文件不同时该怎么做,但您可以使用以下接受默认(非冲突)选项的以下内容自动执行该过程:
unison -auto dirA/ dirB/
unison -batch dirA/ dirB/
根本不问任何问题,并写入输出忽略了多少文件(因为它们有冲突)。
答案 1 :(得分:8)
你也可以试试bitpocket:https://github.com/sickill/bitpocket
答案 2 :(得分:6)
试试这个,
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上运行)。
答案 3 :(得分:5)
您可以使用Osync:http://www.netpower.fr/osync,这是基于智能删除传播的rsync。它还有多个选项,例如恢复暂停执行,软删除和时间控制。
答案 4 :(得分:4)
由于原始问题还涉及桌面和笔记本电脑以及涉及音乐文件的示例(因此他可能使用GUI),我还提到了最好的双向,多平台之一,迄今为止的免费和开源程序:FreeFileSync。
它基于GUI,非常快速和直观,带有过滤和许多其他选项,包括远程连接,查看和交互式管理"碰撞" (例如,具有相似时间戳的文件)并在双向传输,镜像等之间切换。
答案 5 :(得分:3)
答案 6 :(得分:1)
我现在正在使用SparkleShare https://www.sparkleshare.org/
适用于mac,linux和windows。
答案 7 :(得分:1)
我很惊讶还没有人提到 Syncthing。我多年来一直使用它来同步我的手机、平板电脑和两台笔记本电脑。有一次,我还使用它向大约 600 公里外的家人发送 10 GB 的照片,从我的机器直接发送到他们的机器,而且速度非常快(尽管数据通过 Syncthing 的发现服务器路由以解决 NAT 问题)。我也曾在某个时候尝试过 OwnCloud/NextCloud,但 Syncthing 更可靠,而且速度也更快。
答案 8 :(得分:0)
我不确定它是否适用于两个同步,但是对于--delete工作,您还需要添加--recursive参数。
答案 9 :(得分:0)
Rclone是您要寻找的。 Rclone(“用于云存储的rsync”)是一个命令行程序,用于与不同的云存储提供程序(包括本地文件系统)之间来回同步文件和目录。 Rclone以前称为Swiftsync,自2013年以来一直可用。
答案 10 :(得分: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