同步服务器和iOS应用程序之间的文件目录

时间:2012-10-18 14:50:00

标签: iphone objective-c ios

我正在构建一个内部iOS应用程序(因此 - 它不会在应用程序商店中),我需要在服务器和iOS应用程序的每个实例之间保持内容目录同步。如果我只想删除并重新下载此内容,这很容易,但我宁愿使用类似rsync的东西来下载已更改的元素。

我还没有找到任何使用rsync的好方法。我考虑过将Objective-Git作为一种可能性,但是很快就会看到对远程存储库的支持仍然很多,但是还不支持。

作为最后一点,虽然这不会在应用程序商店中,但我不会越狱这些设备,我宁愿不依赖任何私有API(尽管如果有一个优雅的解决方案利用私有API我可能会考虑它。)

思想?

附加说明:这需要是一个孤立的解决方案。我不会依赖外部服务(如Dropbox,Box.net等......)。这需要仅在设备和服务器之间(与设备在本地网络上)之间起作用。

5 个答案:

答案 0 :(得分:3)

使用HTTP列出服务器上每个文件夹的内容。 比较每个文件的上次修改时间与设备上的修改时间,并识别添加/删除的文件。 获取添加和修改的文件,删除已删除的文件。

答案 1 :(得分:1)

听起来你可能要求一个已经这样做的图书馆了,但是如果你找不到它,那么使用服务器上的stat(2)从头开始写这个就显而易见了。 iOS设备上的更高级别的等价物。让iPhone将带有修改日期的文件树发送到服务器,并获取插入/删除/更新操作列表以处理每个文件的URL(或其他),以便您可以在后台线程上逐步执行这些操作。从服务器获取有关新/更新文件的信息包括服务器具有的mod日期,以便您可以在iOS设备上将其设置为相同,并在向服务器询问每个文件的状态时发送(使用黑客的类型)存储它的文件系统,但它可以工作)。

答案 2 :(得分:0)

为什么不设置RESTful接口并跨HTTP进行;这样,您可以轻松地查询修改时间,以确定是否需要更新客户端或服务器文件。您可能还想跟踪客户端上的哪些文件已同步,因此您可以轻松了解要添加或删除的文件。这可以使用简单的.sync文件或使用plist / sqlite / etc。

来完成

答案 3 :(得分:0)

如果您考虑使用FTP,可以使用一些非常先进的客户端库。

例如,iOS Chilkat bundle包括一个支持双向同步的FTP客户端库。它不是免费的,但它相当便宜 - 你会得到大量其他东西,这些东西有可能在某一天变得有用。以下是iOS拉下所有添加和更改的示例(模式2):

http://www.example-code.com/ios/ftp_syncLocalTree.asp

一个警告 - 仅从示例中判断,它似乎不会同步删除。如果这是一项要求,您可以自行完成,而不需要在同步后立即付出太多努力。

答案 4 :(得分:0)

鉴于最初的问题,

acrosync(参见https://acrosync.com/library.html)似乎很合适,但我还没有使用它。