Sincronice archivos arbitrarios con un servidor

12

Estoy buscando una manera de mantener un archivo (keepass .kdb) en mi Droid2 sincronizado con uno en un servidor.

  • Este es solo un archivo en el sistema de archivos, no contactos, calendario, etc.
  • Necesito bidireccional, no solo empujar o tirar. Si el servidor cambia, descárguelo, si el Android cambia, cárguelo. Sí, esto puede generar conflictos que deben resolverse.

Estoy usando Unison para lograr esto entre las PC, pero no hay un cliente de Unison para Android. Me he encontrado con la mano sobre la instalación de OCaml en Android y ejecutar Unison en eso, pero espero algo nativo.

Botsync suena prometedor, pero es unidireccional: al hacer una configuración, usted elige si se carga o descarga.

He visto SugarSync, pero dado que este es mi archivo KeePass, preferiría mantenerlo en mi propio servidor.

Jason Viers
fuente
Iba a sugerir SugarSync ... pero entiendo la preocupación
Daniel
Eche un vistazo a sparkleshare.org : un proyecto relativamente nuevo, cliente de Android en proceso, creo.
Sparx

Respuestas:

3

Es posible que desee considerar otra opción aquí, si desea usar esto para la base de datos de contraseñas KeePass. Esto no funcionará para otro material sensible, pero dado que solicitó específicamente KeePass, esto es lo que hago:

  • Proteja la base de datos con la contraseña (supongo que ya la tiene) y una clave. Esto le dará una autenticación de dos factores ("algo que sabe" - su contraseña y "algo que tiene" - su clave). La base de datos de contraseñas solo se puede desbloquear cuando ambas piezas están en su lugar.
  • Copie la clave en el almacenamiento local de todos sus dispositivos y asígnele un nombre discreto. Preferiblemente colóquelo en un directorio lleno de gente donde parezca un archivo de configuración o un archivo de ruido aleatorio creado por un programa.
  • Suba su base de datos a un servicio de almacenamiento de terceros (uso Dropbox, pero otras opciones funcionarían igual de bien). No hace falta decir que el servicio debe tener un cliente de Android si desea usarlo en su dispositivo.

  • NO cargue su clave allí; use otro método para copiarla en los dispositivos que necesita. Dropbox en particular guarda una copia de los archivos que carga y luego los elimina al menos durante una semana con fines de copia de seguridad (bastante conveniente, debo admitirlo), pero si su clave ya está en el servidor, no es más segura que una contraseña normal. Base de datos protegida.

  • Configure sus clientes KeePass para que no recuerden la ubicación de la clave (recordar la ubicación de la base de datos está bien).

De esta manera, puede cargar su base de datos en un sitio web aleatorio, e incluso si su contraseña se ve comprometida por alguna razón (es decir, registradores de teclado), solo puede usar la base de datos desde dispositivos que tienen la clave Y ahora qué archivo es realmente la clave .

Para mayor comodidad, es posible que desee tener autenticación de solo clave en un dispositivo móvil (las contraseñas seguras son tediosas para escribir en un dispositivo móvil, y obviamente no desea usar nada corto y fácil aquí). Pero recomendaría contra esto, ya que en este caso la seguridad es incluso menor que una base de datos protegida por contraseña: en lugar de una contraseña que tenga en su cabeza, use una "contraseña" (el archivo de clave) que está en su dispositivo .

KeePass no da ninguna pista sobre si requiere clave, contraseña o ambos, lo que es una ventaja para usted.

Martin Tapankov
fuente
+1 para una buena información, acepto que pass & keyfile debería ser "suficiente" para un archivo keepass. Dejo la pregunta sin respuesta con la esperanza de que haya una respuesta "aquí hay un programa que se sincroniza" en el futuro. ¡Gracias!
Jason Viers
4

Es posible que haya encontrado algo con lo que está contento ahora, pero he compilado un binario de unísono que funciona en Android (es posible utilizando las instrucciones de agitación manual de las que está hablando). Las utilicé para compilar de forma cruzada la fuente de Linux en ubuntu 12.10 usando el NDK de Android y con algunas modificaciones al código, ahora está funcionando. Siga las instrucciones en https://sites.google.com/site/keigoattic/ocaml-on-android y luego deberá hacer algunas cosas. Hay un archivo llamado pty.c en la fuente al unísono; busque la siguiente sección:

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

y comentar define HAS_OPENPTY 1como se muestra. También necesita abrir ubase / util.ml y editar:

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

Comenta desde aquí:

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

...¡Hacia aqui!

Entonces también tendrás que editar 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

Y comente # CLIBS+=-cclib -lutilcomo se muestra.

Y hasta donde puedo recordar, todo funcionó. El otro paso una vez compilado es montar la partición de su sistema Android como editable y copiar al unísono a la carpeta / system donde se encuentran todos los demás comandos de shell.

Espero que sea útil para alguien ... Perdí mucho sueño compilándolo.

ChC
fuente
2

Hago exactamente lo que me pides con FolderSync. Es un software muy agradable, con muchas opciones y características. Lo uso como una alternativa personal de Dropbox usando SFTP sobre SSH con archivo de claves para la autenticación. Incluso puede configurarlo para detectar automáticamente los cambios en las réplicas locales y activar una carga inmediata. En mi teléfono lo uso para cargar fotos en mi servidor tan pronto como las tomo, y funciona perfectamente.

RB12
fuente
2

También he seguido la raíz de compilación cruzada como se indica en la respuesta de ChC

He lanzado UnisonSync que le permite al unísono, sin atender a la línea de comandos (y sin enraizamiento) en Google Play:

Desde la prueba de concepto, que se estaba ejecutando rápidamente, hasta una aplicación lista para producción, tomó mucho más tiempo del esperado, pero ahora funciona y es muy útil para sincronizar mis publicaciones y el repositorio de hojas de datos.

Dan
fuente
1
Probablemente consolide las instrucciones para la compilación cruzada en algún momento pronto y coloque el unísono binario / dropbear en alguna parte, para aquellos que prefieren usar la línea de comando.
Dan
1

Utilizo unison montando el androide con sshfs. Como servidor ssh, uso SSHDroid .

Pero ten cuidado, el unísono con sshfs es realmente lento. Aunque con un solo archivo no debería importar.

Volker
fuente
0

No sé de nada nativo que haga esto. Hay muchas aplicaciones de sincronización de archivos, pero todas las que he visto son unidireccionales o dependen del usuario para sincronizar manualmente el archivo desde el teléfono a la nube. Lo que tiene intención de hacer debería ser posible con la API de Dropbox, pero no sé si está dispuesto a crear su propia aplicación personalizada que vigile los archivos específicos que necesita sincronizar.

FoamyGuy
fuente
Había considerado la ruta de la aplicación personalizada, pero si lo hago estaría escribiendo un cliente nativo de Unison en lugar de uno de Dropbox (por lo que permanecerá en mi servidor).
Jason Viers
0

Una búsqueda en el mercado reveló aFileSync que afirma sincronizar archivos a través de FTP y también tiene soporte para la sincronización automática de archivos. Deberá ejecutar un servidor FTP por su cuenta.

También hay SK Sync , pero los usuarios han reportado resultados mixtos con él.

Obviamente, antes de probar cualquiera de estos programas / aplicaciones, haga una copia de seguridad de sus archivos tanto en la PC / servidor como en su dispositivo Android.

Sparx
fuente
aFileSync suena como si tuviera todos los comportamientos que quiero. Las revisiones dan un poco de miedo, y tendré que configurar un servidor FTP para ver cómo funciona.
Jason Viers
-1

Para sincronizar archivos de Android es una nueva versión de mi aplicación BotSyncPlus . Cuando escribió sobre BotSync, solo había una configuración para cargar o descargar. Pero ahora está disponible una nueva versión de BotSyncPlus, donde está la configuración múltiple.

Igor Mino
fuente