Sincronizar arquivos arbitrários com um servidor

12

Eu estou procurando uma maneira de manter um arquivo (keepass .kdb) no meu Droid2 em sincronia com um em um servidor.

  • Este é apenas um arquivo no sistema de arquivos - não contatos, calendário, etc.
  • Eu preciso bidirecional, não apenas empurrar ou puxar. Se o servidor mudar, faça o download, se o Android mudar, faça o upload. Sim, isso pode resultar em conflitos que precisam ser resolvidos.

Estou usando o Unison para conseguir isso entre PCs, mas não há cliente Unison para Android. Descobri acenando sobre a instalação do OCaml no Android e executando o Unison nisso, mas espero algo nativo.

O Botsync parece promissor, mas é unidirecional - ao fazer uma configuração, você escolhe se é upload ou download.

Eu já vi sugarsync, mas, como esse é o meu arquivo KeePass, prefiro mantê-lo em meu próprio servidor.

Jason Viers
fonte
Eu sugeriria o sugarsync ... mas eu entendo a preocupação #
Daniel
Dê uma olhada no sparkleshare.org - projeto relativamente novo, cliente Android em andamento, acredito.
Sparx

Respostas:

3

Você pode considerar outra opção aqui, se desejar usá-la no banco de dados de senhas do KeePass. Isso não funcionará para outros materiais sensíveis, mas, como você pediu especificamente para o KeePass, eis o que eu faço:

  • Proteja o banco de dados com a senha (presumo que você já tenha) e uma chave. Isso fornecerá uma autenticação de dois fatores ("algo que você sabe" - sua senha e "algo que você tem" - sua chave). O banco de dados de senhas só pode ser desbloqueado quando as duas partes estiverem no lugar.
  • Copie a chave para o armazenamento local de todos os seus dispositivos e atribua-lhe um nome discreto. De preferência, coloque-o em um diretório lotado, onde pareceria algum arquivo de configuração ou algum arquivo de ruído aleatório criado por um programa.
  • Carregue seu banco de dados em um serviço de armazenamento de terceiros (eu uso o Dropbox, mas outras opções também funcionam). Escusado será dizer que o serviço deve ter um cliente Android, se você quiser usá-lo no seu dispositivo.

  • NÃO carregue sua chave lá - use outro método para copiá-la para os dispositivos necessários. O Dropbox, em particular, mantém uma cópia dos arquivos que você envia e exclui pelo menos por uma semana para fins de backup (bastante conveniente, devo admitir), mas se sua chave já estiver no servidor, ela não será mais segura do que uma senha normal. banco de dados protegido.

  • Configure seus clientes KeePass para não lembrar a localização da chave (lembrar a localização do banco de dados é bom).

Dessa forma, você pode enviar seu banco de dados para um site aleatório e, mesmo que sua senha seja comprometida por algum motivo (por exemplo, registradores de teclado), você só pode usar o banco de dados de dispositivos com a chave E agora, qual arquivo é realmente a chave .

Por conveniência, convém ter autenticação apenas de chave em um dispositivo móvel (senhas seguras são tediosas para digitar em um dispositivo móvel e, obviamente, você não deseja usar nada curto e fácil aqui). Mas eu recomendaria isso, pois nesse caso a segurança é ainda menor do que um banco de dados protegido por senha - em vez de uma senha que você tem em sua cabeça, você usa uma "senha" (o arquivo de chave) que está no seu dispositivo .

O KeePass não fornece nenhuma dica, seja de chave, senha ou ambas - o que funciona a seu favor.

Martin Tapankov
fonte
+1 para obter informações boas, concordo que o passe e o arquivo-chave devem ser "suficientes" para um arquivo keepass. Estou deixando a pergunta sem resposta, na esperança de que haja uma resposta "aqui está um programa que sincroniza" no futuro. Obrigado!
Jason Viers
4

Você pode ter encontrado algo com o que está feliz agora, mas compilei um binário de uníssono que funciona no android - é possível usar as instruções de ondulação manual de que você está falando - usei-as para compilar de forma cruzada a fonte linux no ubuntu 12.10 usando o NDK do Android e com algumas alterações no código, ele está funcionando agora. Siga as instruções em https://sites.google.com/site/keigoattic/ocaml-on-android e, em seguida, você precisará fazer algumas coisas. Há um arquivo chamado pty.c na fonte unison - encontre a seguinte seção:

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

e comente define HAS_OPENPTY 1como mostrado. Você também precisa abrir o ubase / util.ml e editar:

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

Comente aqui:

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

...Para aqui!

Então você também terá que editar o 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

E comente # CLIBS+=-cclib -lutilcomo mostrado.

E, tanto quanto me lembro, tudo funcionou. A outra etapa, uma vez compilada, é montar sua partição do sistema Android como gravável e copiar uníssono na pasta / system, onde estão todos os demais comandos do shell.

Espero que seja útil para alguém ... Perdi muito sono ao compilá-lo.

ChC
fonte
2

Eu faço exatamente o que você pede com o FolderSync. É um software muito bom, com muitas opções e recursos. Eu o uso como uma alternativa pessoal da caixa de depósito usando SFTP sobre SSH com arquivo de chave para autenticação. Você pode até configurá-lo para detectar automaticamente alterações nas réplicas locais e acionar um upload imediato. No meu telefone, eu o uso para fazer upload de fotos no meu servidor assim que eu as tirar, e funciona perfeitamente.

RB12
fonte
2

Também segui a raiz da compilação cruzada, conforme indicado na resposta do ChC

Eu já lançado UnisonSync que lhe permite uníssono sem lidar com a linha de comando (e sem enraizamento) no Google Play:

Desde a prova de conceito, que estava sendo executada rapidamente, até um aplicativo pronto para produção, demorou muito mais tempo do que o esperado, mas agora funciona e é muito útil para sincronizar minhas publicações e repositório de dados.

Dan
fonte
1
Provavelmente vou consolidar as instruções para compilar a compilação em algum momento em breve e colocar o uníssono / dropbear binário em algum lugar, para aqueles que preferem usar a linha de comando.
Dan
1

Eu uso o uníssono montando o android com sshfs. Como servidor ssh eu uso o SSHDroid .

Mas esteja avisado, o uníssono com sshfs é realmente lento. Embora com um único arquivo não deva importar.

Volker
fonte
0

Não sei de nada nativo que faça isso. Existem muitos aplicativos de sincronização de arquivos, mas todos os que eu vi são unidirecionais ou dependem do usuário para sincronizar manualmente o arquivo do telefone para a nuvem. O que você pretende fazer deve ser possível com a API do Dropbox, mas não sei se você deseja criar seu próprio aplicativo personalizado que vigia os arquivos específicos que você precisa sincronizar.

FoamyGuy
fonte
Eu tinha considerado a rota do aplicativo personalizado, mas se eu fizer isso, estaria gravando um cliente Unison nativo em vez de um dropbox (para que fique no meu servidor).
Jason Viers
0

Uma pesquisa de mercado revelou o aFileSync, que afirma sincronizar arquivos via FTP e também oferece suporte para sincronização automática de arquivos. Você precisará estar executando um servidor FTP por conta própria.

Há também o SK Sync , mas os usuários relataram resultados mistos com ele.

Obviamente, antes de tentar qualquer um desses programas / aplicativos, faça backup dos seus arquivos no PC / servidor e no seu dispositivo Android.

Sparx
fonte
O aFileSync parece ter todos os comportamentos que eu quero. As revisões são um pouco assustadoras, e terei que configurar um servidor FTP para ver como vai.
Jason Viers
-1

Para sincronizar arquivos do Android é uma nova versão do meu aplicativo BotSyncPlus . Quando você escreveu sobre o BotSync, havia apenas uma configuração para upload ou download. Mas agora uma nova versão do BotSyncPlus está disponível, onde é multi-configuração.

Igor Mino
fonte