Beliebige Dateien mit einem Server synchronisieren

12

Ich suche nach einer Möglichkeit, eine Datei (keepass .kdb) auf meinem Droid2 mit einer auf einem Server zu synchronisieren.

  • Dies ist nur eine Datei im Dateisystem - keine Kontakte, Kalender usw.
  • Ich brauche bidirektionale, nicht nur drücken oder ziehen. Wenn sich der Server ändert, laden Sie ihn herunter. Wenn sich der Android ändert, laden Sie ihn hoch. Ja, dies kann zu Konflikten führen, die gelöst werden müssen.

Ich verwende Unison , um dies zwischen PCs zu erreichen, aber es gibt keinen Unison-Client für Android. Ich habe Hand-Waving über die Installation von OCaml auf Android und das Ausführen von Unison darauf gefunden, aber ich hoffe auf etwas Natives.

Botsync klingt vielversprechend, ist aber unidirektional - beim Erstellen einer Konfiguration können Sie auswählen, ob es sich um einen Upload oder Download handelt.

Ich habe sugarsync gesehen, aber da dies meine KeePass-Datei ist, möchte ich sie lieber auf meinem eigenen Server behalten.

Jason Viers
quelle
Ich wollte sugarsync vorschlagen ... aber ich verstehe die Besorgnis
Daniel
Werfen Sie einen Blick auf sparkleshare.org - ein relativ neues Projekt, Android-Client in Arbeit, glaube ich.
Sparx

Antworten:

3

Möglicherweise möchten Sie hier eine andere Option in Betracht ziehen, wenn Sie diese für die KeePass-Kennwortdatenbank verwenden möchten. Bei anderen sensiblen Materialien funktioniert dies nicht. Da Sie jedoch speziell nach KeePass gefragt haben, mache ich Folgendes:

  • Schützen Sie die Datenbank mit dem Kennwort (ich nehme an, Sie haben es bereits) und einem Schlüssel. Dadurch erhalten Sie eine Zwei-Faktor-Authentifizierung ("Etwas, das Sie kennen" - Ihr Passwort und "Etwas, das Sie haben" - Ihr Schlüssel). Die Passwortdatenbank kann nur entsperrt werden, wenn beide Teile vorhanden sind.
  • Kopieren Sie den Schlüssel in den lokalen Speicher all Ihrer Geräte und geben Sie ihm einen unauffälligen Namen. Stellen Sie es vorzugsweise in ein überfülltes Verzeichnis, in dem es wie eine Konfigurationsdatei oder eine zufällige Rauschdatei aussieht, die von einem Programm erstellt wurde.
  • Laden Sie Ihre Datenbank auf einen Speicherdienst eines Drittanbieters hoch (ich verwende Dropbox, aber andere Optionen funktionieren genauso gut). Es versteht sich von selbst, dass der Dienst einen Android-Client haben sollte, wenn Sie ihn auf Ihrem Gerät verwenden möchten.

  • Laden Sie Ihren Schlüssel dort NICHT hoch. Verwenden Sie eine andere Methode, um ihn auf die gewünschten Geräte zu kopieren. Insbesondere Dropbox bewahrt eine Kopie der Dateien auf, die Sie hochladen und dann zu Sicherungszwecken mindestens eine Woche lang löschen (das muss ich zugeben). Wenn sich Ihr Schlüssel jedoch bereits auf dem Server befindet, ist er nicht sicherer als ein normales Kennwort. geschützte Datenbank.

  • Konfigurieren Sie Ihre KeePass-Clients so, dass sie sich nicht an den Speicherort des Schlüssels erinnern (der Speicherort der Datenbank ist in Ordnung).

Auf diese Weise können Sie Ihre Datenbank auf eine zufällige Website hochladen und selbst wenn Ihr Kennwort aus irgendeinem Grund (z. B. Tastaturprotokollierer) kompromittiert wird, können Sie die Datenbank nur von Geräten verwenden, die den Schlüssel haben UND jetzt, welche Datei tatsächlich der Schlüssel ist .

Der Einfachheit halber möchten Sie möglicherweise eine Authentifizierung nur mit Schlüssel auf einem mobilen Gerät durchführen (sichere Kennwörter sind für die Eingabe auf einem mobilen Gerät mühsam, und Sie möchten hier offensichtlich nichts Kurzes und Einfaches verwenden). Ich würde jedoch davon abraten, da in diesem Fall die Sicherheit noch geringer ist als bei einer kennwortgeschützten Datenbank. Statt eines Kennworts, das Sie in Ihrem Kopf haben, verwenden Sie ein "Kennwort" (die Schlüsseldatei), die sich auf Ihrem Gerät befindet .

KeePass gibt keine Hinweise darauf, ob Schlüssel, Passwort oder beides erforderlich sind - was zu Ihrem Vorteil ist.

Martin Tapankov
quelle
+1 für gute Infos, ich bin damit einverstanden, dass Pass & Keyfile "genug" für eine Keepass-Datei sein sollte. Ich lasse die Frage unbeantwortet in der Hoffnung, dass es in Zukunft eine Antwort auf die Frage "Hier ist ein Programm, das synchronisiert" geben wird. Vielen Dank!
Jason Viers
4

Sie haben vielleicht etwas gefunden, mit dem Sie jetzt zufrieden sind, aber ich habe eine unisono-Binärdatei kompiliert, die auf Android funktioniert - es ist möglich, die Handbewegungsanweisungen zu verwenden, von denen Sie sprechen - ich habe sie verwendet, um die Linux-Quelle in Ubuntu 12.10 zu kompilieren Mit dem Android NDK und mit ein paar Änderungen am Code funktioniert es jetzt. Befolgen Sie die Anweisungen unter https://sites.google.com/site/keigoattic/ocaml-on-android. Anschließend müssen Sie einige Schritte ausführen. Es gibt eine Datei namens pty.c in der unisono-Quelle - finden Sie den folgenden Abschnitt:

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

und define HAS_OPENPTY 1wie gezeigt auskommentieren. Sie müssen auch ubase / util.ml öffnen und bearbeiten:

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

Kommentar von hier aus:

    (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 *))

...Bis hierhin!

Dann musst du auch Makefile.Ocaml bearbeiten

   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

Und # CLIBS+=-cclib -lutilwie gezeigt auskommentieren.

Und soweit ich mich erinnern kann, hat alles geklappt. Der andere Schritt, der einmal kompiliert wurde, ist das Mounten der Android-Systempartition als beschreibbar und das gleichzeitige Kopieren in den Ordner / system, in dem sich alle anderen Shell-Befehle befinden.

Hoffe, das ist hilfreich für jemanden ... Ich habe viel Schlaf verloren, als ich es zusammengestellt habe.

ChC
quelle
2

Ich mache genau das, was Sie mit FolderSync verlangen. Es ist eine sehr schöne Software mit vielen Optionen und Funktionen. Ich verwende es als persönliche Dropbox-Alternative mit SFTP über SSH und Schlüsseldatei zur Authentifizierung. Sie können es sogar so einrichten, dass Änderungen an den lokalen Replikaten automatisch erkannt werden und ein sofortiger Upload ausgelöst wird. Auf meinem Handy lade ich damit Bilder auf meinen Server hoch, sobald ich sie nehme, und es funktioniert einfach perfekt.

RB12
quelle
2

Ich bin auch der Cross-Compilation-Wurzel gefolgt, wie in der Antwort von ChC angegeben

Ich habe UnisonSync veröffentlicht , mit dem Sie bei Google Play unisono arbeiten können, ohne sich mit der Befehlszeile (und ohne Rooting) zu befassen:

Vom schnell laufenden Proof-of-Concept bis zur produktionsbereiten App dauerte es viel länger als erwartet, aber jetzt funktioniert es und ist sehr praktisch, um meine Veröffentlichungen und mein Datenblatt-Repository zu synchronisieren.

Dan
quelle
1
Ich werde wahrscheinlich die Anweisungen zum Cross-Kompilieren bald konsolidieren und das binäre unison / dropbear irgendwo ablegen, für diejenigen, die die Befehlszeile bevorzugen.
Dan
1

Ich benutze unisono durch Mounten des Android mit sshfs. Als SSH Server benutze ich SSHDroid .

Aber seien Sie gewarnt, das Unisono mit sshfs ist sehr langsam. Obwohl mit einer einzigen Datei sollte es egal sein.

Volker
quelle
0

Ich kenne nichts Eingeborenes, das dies tut. Es gibt viele Dateisynchronisierungs-Apps, aber alle, die ich gesehen habe, sind entweder unidirektional oder verlassen sich darauf, dass der Benutzer die Datei manuell vom Telefon in die Cloud synchronisiert. Was Sie vorhaben, sollte mit der Dropbox-API möglich sein, aber ich weiß nicht, ob Sie bereit sind, eine eigene benutzerdefinierte App zu erstellen, die die spezifischen Dateien überwacht, die Sie synchronisieren müssen

FoamyGuy
quelle
Ich hatte über die Route für benutzerdefinierte Apps nachgedacht, aber wenn ich das tue, würde es einen nativen Unison-Client schreiben und keinen Dropbox-Client (also bleibt es auf meinem Server).
Jason Viers
0

Eine Marktsuche ergab aFileSync behauptet, Dateien über FTP zu synchronisieren und Dateien automatisch zu synchronisieren. Sie müssen einen eigenen FTP-Server betreiben.

Es gibt auch SK Sync , aber Benutzer haben gemischte Ergebnisse damit gemeldet.

Bevor Sie eines dieser Programme / Apps ausprobieren, sichern Sie bitte Ihre Dateien sowohl auf dem PC / Server als auch auf Ihrem Android-Gerät.

Sparx
quelle
aFileSync klingt so, als ob es alle von mir gewünschten Verhaltensweisen aufweist. Die Bewertungen sind ein bisschen beängstigend, und ich muss einen FTP-Server einrichten, um zu sehen, wie es geht.
Jason Viers
-1

Zum Synchronisieren von Dateien von Android gibt es eine neue Version meiner App BotSyncPlus . Als Sie über BotSync geschrieben haben, gab es nur eine Konfiguration zum Hoch- oder Herunterladen. Aber jetzt ist eine neue Version von BotSyncPlus verfügbar, in der es mehrere Konfigurationen gibt.

Igor Mino
quelle