与服务器同步任意文件


12

我正在寻找一种方法来使Droid2上的文件(keepass .kdb)与服务器上的文件保持同步。

  • 这只是文件系统上的一个文件,而不是联系人,日历等。
  • 我需要双向的,而不仅仅是推或拉。如果服务器更改,请下载;如果Android更改,请上传。是的,这可能会导致需要解决的冲突。

我正在使用Unison在PC之间实现此目的,但是没有适用于Android的Unison客户端。我已经发现了在Android上安装OCaml并在其上运行Unison的努力,但是我希望能有一些本机。

Botsync听起来很有前途,但它是单向的-进行配置时,您可以选择上传还是下载。

我已经看到过sugarsync,但是鉴于这是我的KeePass文件,我希望将其保存在我自己的服务器上。


我本来是建议sugarsync ...但我了解这个问题
Daniel

看看sparkleshare.org-我认为这是一个相对较新的项目,正在开发Android客户端。
Sparx

Answers:


3

如果要将其用于KeePass密码数据库,则可能需要在此处考虑其他选项。这不适用于其他敏感材料,但是由于您是专门要求KeePass的,因此我将执行以下操作:

  • 使用密码(我想您已经拥有)密钥保护数据库。这将为您提供两部分身份验证(“您知道的东西”-您的密码,以及“您拥有的东西”-您的密钥)。密码数据库只有在两个位置都到位时才能解锁。
  • 将密钥复制到所有设备的本地存储中,并为其指定一个不起眼的名称。最好将其放在拥挤的目录中,在该目录中看起来像是某个程序创建的某些配置文件或某些随机噪声文件。
  • 将您的数据库上传到第三方存储服务(我使用Dropbox,但其他选项也可以使用)。毫无疑问,如果您想在设备上使用该服务,则该服务应具有Android客户端。

  • 请勿将密钥上传到那里-使用另一种方法将其复制到所需的设备上。Dropbox尤其会保留您上载的文件的副本,然后至少备份一周以用于备份目的(非常方便,我必须承认),但是如果您的密钥已经在服务器上,则它并不比普通密码更安全-受保护的数据库。

  • 配置您的KeePass客户端,使其不记住密钥的位置(记住数据库的位置就可以了)。

这样,您可以将数据库上传到随机网站,即使您的密码由于某种原因(例如键盘记录器)被盗用,您也只能使用具有密钥的设备使用数据库,而现在哪个文件实际上是密钥。

为了方便起见,您可能希望在移动设备上进行仅密钥身份验证(安全的密码在移动设备上键入很乏味,并且您显然不想在此处使用任何简短的操作)。但是我不建议这样做,因为在这种情况下,安全性甚至比受密码保护的数据库要低-您可以使用设备上的“密码”(密钥文件)来代替头脑中的密码。

KeePass不会提示是否需要密钥,密码或两者都提供,这对您有利。


+1以获得良好信息,我同意pass&keyfile对于keepass文件应该“足够”。我没有回答这个问题,希望将来会出现“这是一个可以同步的程序”的答案。谢谢!
詹森·维尔斯

4

您可能现在已经找到了满意的东西,但是我已经编译了可在android上使用的统一格式二进制文件-可以使用您正在谈论的挥手说明-我用它们来交叉编译ubuntu 12.10中的linux源代码使用android NDK并对其代码进行了一些改动,现在可以使用了。按照https://sites.google.com/site/keigoattic/ocaml-on-android上的说明进行操作,然后您需要做一些事情。统一源中有一个名为pty.c的文件-找到以下部分:

// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif

并注释掉define HAS_OPENPTY 1,如图所示。您还需要打开ubase / util.ml并编辑:

let homeDir () =
  System.fspathFromString "/Your path here"

从这里注释掉:

    (if (osType = `Unix) || isCygwin then
       safeGetenv "HOME"
     else if osType = `Win32 then
(*We don't want the behavior of Unison to depends on whether it is run
  from a Cygwin shell (where HOME is set) or in any other way (where
  HOME is usually not set)
       try System.getenv "HOME" (* Windows 9x with Cygwin HOME set *)
       with Not_found ->
*)
       try System.getenv "USERPROFILE" (* Windows NT/2K standard *)
       with Not_found ->
       try System.getenv "UNISON" (* Use UNISON dir if it is set *)
       with Not_found ->
       "c:/" (* Default *)
     else
       assert false (* osType can't be anything else *))

...到这里!

然后您还必须编辑Makefile.Ocaml

   CWD=$(shell pwd)
    EXEC_EXT=
    WINOBJS=
    SYSTEM=generic
    # openpty is in the libutil library
    ifneq ($(OSARCH),solaris)
      ifneq ($(OSARCH),osx)
      #  CLIBS+=-cclib -lutil
      endif
    endif
    buildexecutable::
        @echo Building for Unix
  endif
endif

并注释掉# CLIBS+=-cclib -lutil,如图所示。

据我所知,所有方法都有效。编译后的另一步是将您的android系统分区挂载为可写状态,然后将其一致地复制到所有其他shell命令所在的/ system文件夹中。

希望这对某人有帮助...编译它使我失去了很多睡眠。


2

我正是按照FolderSync的要求来做的。这是一款非常不错的软件,具有许多选项和功能。我将其用作个人Dropbox替代品,它通过SSH使用SFTP和密钥文件进行身份验证。您甚至可以将其设置为自动检测本地副本上的更改并触发立即上载。在手机上,我一拿到照片就可以使用它在服务器上上传照片,而且效果非常完美。


2

我还遵循了ChC答案中指出的交叉编译根目录

我已经发布了UnisonSync,它使您可以在不处理Google Play命令行(也无需生根)的情况下实现统一:

从快速运行的概念验证到投入生产的应用程序,它花费的时间比预期的要多得多,但是现在它可以正常工作,并且非常方便地同步我的出版物和数据表存储库。


1
对于那些更喜欢使用命令行的人,我可能会尽快合并它们的说明,以便在某个时候进行交叉编译,并将二进制文件一致/有效。
2013年

1

我通过用sshfs挂载android来使用统一。作为ssh服务器,我使用SSHDroid

但是要警告,与sshfs的协调确实很慢。虽然只有一个文件,但这并不重要。


0

我不知道有什么原生工具可以做到这一点。有许多文件同步应用程序,但是我所看到的所有应用程序都是单向的,或者依赖于用户手动将文件从手机同步到云。Dropbox API应该可以实现您打算做的事情,但是我不知道您是否愿意创建自己的自定义应用程序来监视您需要同步的特定文件


我曾考虑过自定义应用程序路由,但如果这样做,那将是在编写本机Unison客户端而不是Dropbox客户端(这样它将保留在我的服务器上)。
詹森·维尔斯

0

市场搜索显示FileSync声称可以通过FTP同步文件,并且还支持自动同步文件。您将需要自己运行FTP服务器。

还有SK Sync,但用户报告的结果不一。

显然,在尝试使用这些程序/应用之前,请同时在PC /服务器和Android设备上备份文件。


aFileSync听起来像它具有我想要的所有行为。评论有点吓人,我必须设置一个FTP服务器才能看到它的运行情况。
詹森·维尔斯

-1

从Android同步文件是我的应用程序BotSyncPlus的新版本。当您撰写有关BotSync的文章时,只有一种配置可供上载或下载。但是现在可以使用新版本的BotSyncPlus,它是多配置的。

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.