跨平台文件同步方法


1

在包含不同版本的Windows客户端(Win98,NT,Windows 7)和Linux文件服务器的跨操作系统网络中,我想同步文件夹。

有两个限制:

1)每个客户端应同步到服务器上的特定文件夹,但由于磁盘空间限制,客户端不应在彼此之间同步。

Server -+- SyncFolder for Client A  <---> Folder_X on Client A
        |                                 
        +- SyncFolder for Client B  <---> Folder_Y on Client B 

在上面的示例中,客户端A和客户端B不同步。

2)没有互联网连接可用,因此不能使用Dropbox,而是使用私有云设置,如Owncloud。

有什么解决方案?

编辑: 一个完美的解决方案可以像Dropbox或类似工具一样立即同步,而不需要用户交互。

Answers:


0

你是什​​么意思:“1)每个客户端应该同步到服务器上的特定文件夹,但由于磁盘空间的限制,客户端之间不应该相互同步。”

“同步”这个词含糊不清。该术语至少有三种可能的解释:

  1. “仅推送”同步,这意味着客户端将其数据推送到服务器,但不从服务器下载任何数据。

  2. “仅拉”同步,这意味着客户端将其数据下载到服务器,但不会将其本地更改推送到服务器。

  3. “双向”同步,它是1和2的组合,结合了一些关于在推或拉同名文件时合并或解决冲突的规则。

如果你只想推送,你可以使用简单的东西,如FTP或SCP(几十个可用的客户端 和服务器 在所有主要平台上)并将数据推送到服务器,忽略服务器上的内容。

如果您只想根据某些规则同步某些文件,那么这实际上是“与规则”的双向同步。虽然你的规则可能是任意复杂的规则,例如只有当月亮正好在上午12:07在乌拉圭以“5”结尾的时间完成一半时才下载文件, 基本 “rsync”程序中提供了对常见规则的支持。看到 http://linux.byexamples.com/archives/305/filter-what-to-backup-with-rsync/


我不明白第二种解释。你能澄清一下吗?我对同步的理解是,任何一方的任何变化都会反映在另一方面。但是,在这种特定的设置中,“仅推动”就足够了。谢谢你指出了差异。
Bjoern

在仅拉动方案中,没有客户端将其数据存储在中央文件服务器上。交换的唯一数据是客户端在Linux文件服务器上保留数据的“镜像”或本地副本。这就是拉力的意思。如果客户端是发起(生成)数据的客户端,那么在您的情况下这可能没有意义。由于您说您只想推送,请尝试设置SCP或FTP或SFTP。
allquixotic

对于SCP,FTP或SFTP,有人必须启动推送。我想到的是一种更直观的方法,在没有用户交互的情况下上传(或同步)数据。这当然可以通过cron作业来完成,但我希望在没有用户交互的情况下进行即时传输。在Linux上,可以通过inotify-tools启动推送,但我的客户端是基于Windows的。我还想过OwnCloud,但这会在所有客户端之间同步数据。
Bjoern

您可以使用FileSystemWatcher和FTP / SFTP客户端库编写.NET程序...当用户登录时在后台运行程序,它将监视您的“推送”导向器以进行更改并将其压缩自动连接到文件服务器。看到 msdn.microsoft.com/en-us/library/... - 这是一个常见的情况,如果一个产品不存在自动执行此操作我会感到惊讶,但是,嘿,那会 大概 涉及向某人付钱,所以这取决于你......
allquixotic

0

您需要做的就是找到适用于您拥有的所有版本的Windows同步程序。我个人用过 同步中 所有这些,但当前版本可能不再支持NT之前的任何内容 - 尽管他们可能愿意为您提供旧版本。他们还拥有站点许可。

微软有一个名为免费的实用程序 的SyncToy ,但是,我认为它不支持Win98。


谢谢。事实上,不同的Windows版本似乎是这里的瓶颈。
Bjoern

@Bjoern:你带来的所有Windows版本都带有内置功能 xcopy 命令行实用程序,如果给出正确的参数,可用于执行同步。
martineau

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.