Sincronização de arquivo semelhante a um Dropbox sem um servidor central [fechado]

22

Estou procurando uma maneira de sincronizar as unidades secundárias em meus dois Macs pela Internet. Tenho conectividade VPN consistente entre os dois macs e posso acessá-los como se eles estivessem sentados um ao lado do outro.

Estou procurando uma maneira de implementar uma experiência do tipo Dropbox em que, se eu modificar um arquivo em um Mac, o arquivo será enviado para o outro Mac (e vice-versa). Eu também preciso da habilidade de controlar a largura de banda (então nosso pequeno tubo de upload de 1 megabit não fica sobrecarregado). Alguma sugestão?

Ah, e usar o dropbox está meio fora de questão no momento, já que minha unidade tem 500 GB. Obrigado!

    
por muncherelli 12.05.2014 / 08:26

9 respostas

30

Confira Bittorrent Sync . Tem a funcionalidade de sincronização como o Dropbox, mas sem a nuvem.

    
por 12.05.2014 / 09:12
16

Se você quiser ir ao hardcore, você pode usar o comando rsync nativamente em OsX , como a equipe * nix.

Antes de tudo, você deve ter permissão para acessar o host remoto pelo ssh. O servidor OpenSSH é pré-instalado no Mac OsX e você não precisa instalar nenhum pacote adicional. Só precisa fazer algumas configurações do sistema. Para ativar o servidor OpenSSH no Mac OS X, abra System Preferences e clique em Sharing. E, marque a caixa Login remoto para ativar o SSH e, em seguida, selecione o botão de opção Todos os usuários na seção Permitir acesso para .

Agora você pode acessar o host remoto por ssh.

Agora, você deve criar uma chave de acesso público para acesso sem senha da máquina convidada local ao host remoto sobre o ssh. Para isso você deve sujar um pouco a sua mão. :)

Primeiro, determine se você já tem chaves de autenticação. No Terminal , execute:

sudo ls -la /var/root/.ssh

Se você vir "id_dsa" e id_dsa.pub , poderá pular o restante desta seção.

Na máquina cliente, execute o seguinte no terminal:

sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"

Depois de criar a chave de acesso na máquina de convidado local, você precisa copiar a chave pública do convidado para o arquivo authorized_keys do host. Você pode fazer isso com um simples comando Terminal que acrescenta a chave pública à lista de chaves autorizadas:

sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'

O comando abaixo executará um backup incremental do seu sistema de arquivos raiz na máquina guest local no seu host remoto:

/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

Você pode alterar os parâmetros do rsync para comportamentos de sincronização de alterações. Se você adicionar este comando em crontab , a sincronização poderá ser executada em qualquer tempo. Por exemplo:

sudo crontab -e

anexe a linha abaixo ao crontab:

*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

Isto será executado sincronização a cada meia hora.

Aqui está o exemplo de script Python:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Cron automated synchronization script.

Desc: Synchronize remote folder into local machine. Duplicate processes 
      are disallowed until running process finished.

Usage:
    :: Change required variables as _user, _password, _domain etc.
    :: Edit crontab 
    # crontab -e

    :: Append line below.
    */30 * * * * python synchronizator.py 2>&1 &

Author: Sencer HAMARAT (RecNes)
E-Mail: [email protected]
"""

import shlex
from subprocess import Popen, PIPE
import logging as log
import sys

__author__ = "Sencer HAMARAT"

_user = 'username'
_password = 'password'
_domain = 'example.com'

_expectation = "Enter passphrase for key \'/home/%s/.ssh/id_rsa\':" % _user
_rsync = '/usr/bin/rsync --partial --progress -avvz -e'
_pub_key = '/home/%s/.ssh/id_rsa.pub' % _user
_ssh = '/usr/bin/ssh -i %s' % _pub_key
_remoteDir = '/home/%s/backup/' % _user
_localDir = '/home/%s/backup/' % _user
_command = '%s %s %s@%s:%s %s' % (_rsync, _ssh, _user, _domain, _remoteDir, _localDir)
run_command = shlex.split(_command)

_logFile = "logfile.log"
_logFormat = "%(asctime)s %(levelname)s %(name)s %(process)d %(threadName)s %(module)s:%(lineno)d %(funcName)s() " \
             "%(message)s\n"
log.basicConfig(filename=_logFile, level=log.DEBUG, format=_logFormat)

log.debug(u'Command will run: %s' % _command)

try:
    running_command = Popen(run_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    if running_command.poll():
        log.debug(repr(running_command.poll()))
        sys.exit()
    if _expectation in running_command.communicate():
        running_command.communicate(_password)
    print running_command.communicate()
except Exception as e:
    log.debug(repr(e))
finally:
    sys.exit()
    
por 12.05.2014 / 12:50
8

Owncloud é uma solução possível se você quiser acesso baseado na web.

Você precisará do seu próprio servidor para hospedar o Owncloud, mas é mais uma solução baseada em servidor onde seus 2 clientes podem acessar o que eles precisam, mas haverá apenas 1 cópia do arquivo em questão, que será situado no servidor Owncloud.

    
por 12.05.2014 / 10:17
4

Eu recentemente deparei com o Syncthing. Muito legal feautures.

link

    
por 14.05.2014 / 01:20
2

Se o Windows, houver uma ferramenta SyncToy que faz isso em três passos. se o Mac é sobre a ferramenta ChronSync ou o endereço http://www.tri-edre.com/. com / english / tribackup.html "> ferramenta tri-backup

    
por 12.05.2014 / 09:07
2

Considere o Unison. Ele lida com a sincronização de arquivos bidirecional. Você pode configurá-lo em um agendamento com cron ou algum outro aplicativo de agendamento.

link

Unison is a file-synchronization tool for Unix and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.

Unison shares a number of features with tools such as configuration management packages (CVS, PRCS, Subversion, BitKeeper, etc.), distributed filesystems (Coda, etc.), uni-directional mirroring utilities (rsync, etc.), and other synchronizers (Intellisync, Reconcile, etc). However, there are several points where it differs:

    
por 13.05.2014 / 01:45
1

Eu tive boa sorte com o GoodSync com dois PCs na mesma LAN, mas aposto que ainda funcionaria bem na sua situação.

Aqui está a descrição do produto:

  • O GoodSync sincroniza arquivos entre seu computador, dispositivos móveis, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV e Azure.
  • O GoodSync faz o backup de arquivos em unidades portáteis, dispositivos móveis e para FTP, S3, GDocs, SkyDrive, DAV ou outro computador.
  • Sincronização direta com P2P: O GoodSync Connect sincroniza arquivos diretamente entre seus computadores, sem lentidão introduzida pela sincronização por meio de servidores de terceiros.
  • O GoodSync é muito rápido e sincroniza arquivos em seu comando, periodicamente, por um agendamento ou em tempo real (na alteração do arquivo).

Você só precisa do GoodSync configurado em um dos seus PCs; Ele lida com a sincronização bidirecional e o tipo de sincronização que ele faz é personalizável. Além disso, é altamente recomendado pela CNet.

    
por 12.05.2014 / 17:11
1

Outra possível solução é o AeroFS .

O AeroFS sincroniza dados bidirecionalmente entre seus dispositivos enquanto armazena seus dados apenas em seus dispositivos - seus dados nunca chegam perto de seus servidores. O AeroFS mantém um histórico de revisão de seus arquivos para que você possa reverter para versões anteriores quando necessário e fornece uma ferramenta para resolver conflitos.

O AeroFS funciona em Windows, Mac, Linux, iOS e Android, por isso você deve ter cuidado.

    
por 15.05.2014 / 06:14
0

Portanto, se você não se opuser ao armazenamento em nuvem, existem duas soluções de hardware para unidades externas:

Space monkey usa um paradigma interessante .. aloca parte do seu disco para armazenar pequenos pedaços de dados de outras pessoas, e também armazena seus dados em muitas unidades de outras pessoas (criptografadas, é claro). Dessa forma, há muita redundância em caso de desastre, e suas máquinas não precisam poder ver uma à outra ou até mesmo estar conectadas ao mesmo tempo.

Transportador de arquivos é um pouco mais simples, pois os dados só são sincronizados em outras unidades de transporte de arquivos que você especificamente configurado para sincronizar.

Ambas as opções são boas para grandes quantidades de dados, e você apenas compra o hardware uma vez sem uma taxa de assinatura.

    
por 14.05.2014 / 09:56

Tags