Synchronisation de fichiers de type Dropbox sans serveur central [fermé]

22

Je cherche un moyen de synchroniser les disques secondaires de mes deux Mac sur Internet. J'ai une connectivité VPN cohérente entre les deux Mac et je peux y accéder comme s'ils étaient assis l'un à côté de l'autre.

Je cherche un moyen de mettre en œuvre une expérience de type Dropbox où si je modifie un fichier sur un Mac, le fichier serait poussé vers l'autre Mac (et vice-versa). J'ai également besoin de pouvoir limiter la bande passante (afin que notre petit canal de téléchargement de 1 mégabit ne soit pas surchargé). Aucune suggestion?

Oh, et utiliser dropbox est en quelque sorte hors de question pour le moment car mon disque dur fait 500 Go. Merci!

muncherelli
la source
Recherchez un port de "rsync" qui est un outil Linux pour cela. Il peut synchroniser vos fichiers à chaque exécution; alors vous n'avez besoin que d'un moyen de déclencher cela chaque fois que sg change.
dkellner
Voulez-vous que tous les 500 Go soient synchronisés?
cubuspl42
5
Ce serait sur le thème des recommandations de logiciels. Voir cette question (non spécifique à Mac): softwarerecs.stackexchange.com/questions/129/…
Nicolas Raoul
En avez-vous aussi besoin? "Si je supprime le fichier sur l'une ou l'autre machine, il devrait également être supprimé de l'autre machine, au lieu d'être recréé."
Patrick M
N'est-ce pas à cela que sert iCloud? hints.macworld.com/article.php?story=20120803092156975
Blazemonger

Réponses:

30

Découvrez Bittorrent Sync . Il a la fonctionnalité de synchronisation comme Dropbox, mais sans le cloud.

Oskar Persson
la source
Inconvénient: les deux machines doivent être en ligne simultanément pour pouvoir se synchroniser.
Gerald Schneider
18
@GeraldSchneider Connaissez-vous quelque chose qui n'a pas cette limitation?
Shelvacu
2
@shelvacu, pas possible. Si vous voulez qu'il se synchronise sans avoir besoin des deux machines en ligne, vous avez besoin d'un stockage cloud (contre la demande OP).
HalosGhost
5
Pas nécessairement un stockage cloud. Vous avez besoin d'un nœud qui est toujours en ligne. Cela peut être un ordinateur, un NAS, un service cloud, votre instance OwnCloud auto-hébergée comme proposé par Lawrence ou toute solution similaire. Mais tant que vous n'avez pas un nœud toujours en ligne, cette limitation s'applique toujours.
Gerald Schneider
3
J'utilise BitTorrent Sync et je le recommande vivement - je l'utilise en conjonction avec Dropbox pour les fichiers qui sont trop gros et ne valent pas de prendre de la place. Une chose à considérer cependant est qu'il ne gère pas bien les modifications simultanées de fichiers - il n'y a pas de gestion des conflits comme avec Dropbox - le dernier fichier modifié gagne simplement. Pas nécessairement un problème mais cela dépend de vos besoins.
zelanix
16

Si vous voulez devenir hardcore, vous pouvez utiliser la commande rsync en natif dans OsX , comme * nix staff.

Avant tout, vous devez avoir la permission d'accéder à l'hôte distant par ssh. Le serveur OpenSSH est préinstallé sur Mac OsX et vous n'avez pas besoin d'installer de package supplémentaire. Il suffit de faire quelques réglages système. Pour activer le serveur OpenSSH sur Mac OS X, ouvrez les Préférences Système et cliquez sur Partager. Et puis, cochez la case Connexion à distance pour activer SSH, puis sélectionnez le bouton radio intitulé Tous les utilisateurs dans la section Autoriser l'accès pour .

Vous pouvez maintenant accéder à l'hôte distant par ssh.

Maintenant, vous devez créer une clé d'accès publique pour un accès sans mot de passe de l'ordinateur invité local à l'hôte distant via ssh. Pour cela, vous devez vous salir un peu la main. :)

Tout d'abord, déterminez si vous disposez déjà de clés d'authentification. Dans le terminal , exécutez:

sudo ls -la /var/root/.ssh

Si vous voyez "id_dsa" et id_dsa.pub , vous pouvez ignorer le reste de cette section.

Sur la machine cliente, exécutez ce qui suit dans le terminal:

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

Après avoir créé la clé d'accès sur l'ordinateur invité local, vous devez copier la clé publique de l'invité dans le fichier authorized_keys de l'hôte. Vous pouvez le faire avec une simple commande Terminal qui ajoute la clé publique à la liste des clés autorisées:

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

La commande ci-dessous qui effectuera une sauvegarde incrémentielle de votre système de fichiers racine sur l'ordinateur invité local sur votre hôte distant:

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

Vous pouvez modifier les paramètres de rsync pour modifier les comportements de synchronisation. Si vous ajoutez cette commande dans crontab , la synchronisation peut être exécutée dans n'importe quel cycle de temps. Par exemple:

sudo crontab -e

ajouter la ligne ci-dessous pour 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

Cette opération exécutera la synchronisation toutes les demi-heures.

Voici l'exemple 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()
Sencer H.
la source
J'avais envisagé d'utiliser rsync, mais le problème réside ici: "Et si le rsync n'est pas complètement terminé après les 30 minutes?" Je ne veux pas que deux rsyncs se produisent en même temps. Y a-t-il un moyen de contourner cela?
muncherelli
1
@muncherelli: il est relativement indolore d'écrire un petit mécanisme de "verrouillage" autour du rsync pour empêcher les synchronisations simultanées. Fondamentalement, enveloppez l'appel rsync dans un script bash et vous êtes libre de faire tout ce que vous voulez.
unperson325680
J'ai ajouté un exemple de script. J'espère que cela aidera.
Sencer H.
Ceci est un excellent script. Merci beaucoup pour l'aide. J'ai décidé d'utiliser BitTorrent Sync en raison de la simplicité et de la limitation de la bande passante. (Je sais que vous pouvez définir l'utilisation maximale de la bande passante avec rsync, mais BTS est beaucoup plus intuitif).
muncherelli
8

Owncloud est une solution possible si vous souhaitez un accès basé sur le Web.

Vous aurez besoin de votre propre serveur pour héberger Owncloud, mais il s'agit plutôt d'une solution basée sur un serveur où vos 2 clients peuvent accéder à leurs besoins à volonté, mais il n'y aura qu'une seule copie du fichier en question, qui sera située sur le Serveur Owncloud.

Lawrence
la source
Est-ce toujours le cas que vous ne pouvez vous connecter qu'à un seul cloud? Par exemple, je ne peux pas en avoir un et en partager un autre avec mon frère?
Thomas Weller
Au moins, les clients de synchronisation de bureau prennent désormais en charge plusieurs connexions cloud simultanées. Mais également au sein d'un serveur, vous ne pouvez partager que des fichiers / répertoires spécifiques, pas nécessairement tout.
ojdo
4

Je suis récemment tombé sur Syncthing. Beaucoup de fonctionnalités cool.

http://syncthing.net/

user5522
la source
2

Si Windows, il existe un outil SyncToy qui le fait en trois étapes. si Mac, il est sur le ChronSync outil ou tri-backup outil

Ruslan Gerasimov
la source
Salut Ruslan, pouvez-vous modifier votre réponse pour expliquer pourquoi ChronSync ou Tri-Backup serait la solution idéale pour l'OP? En ce moment, il est très faible réponse de qualité, et ne fait pas répondre à la façon de la question. Merci
Canadian Luke REINSTATE MONICA
Bonjour, merci de votre question. Eh bien, je ne dis pas que ces programmes sont la solution idéale, mais je pense que c'est assez facile car ils ont une interface graphique, ce qui signifie également que n'importe qui peut le faire sans une compréhension approfondie d'un tas de lignes de commande orthographiées par magie. Je crois aussi que si quelqu'un a un problème d'utilisation des programmes répertoriés, il devrait être posé dans une question distincte, comme ce qu'il a fait, ce qui ne va pas \ étrange. Il s'agit plutôt de copier ici la documentation pour eux sans qu'on leur pose de questions particulières.
Ruslan Gerasimov
2

Considérez Unison. Il gère la synchronisation bidirectionnelle des fichiers. Vous pouvez le définir sur un calendrier avec cronou une autre application de planification.

http://www.cis.upenn.edu/~bcpierce/unison/

Unison est un outil de synchronisation de fichiers pour Unix et Windows. Il permet à deux répliques d'une collection de fichiers et de répertoires d'être stockées sur différents hôtes (ou différents disques sur le même hôte), modifiées séparément, puis mises à jour en propageant les modifications de chaque réplique à l'autre.

Unison partage un certain nombre de fonctionnalités avec des outils tels que les packages de gestion de configuration (CVS, PRCS, Subversion, BitKeeper, etc.), les systèmes de fichiers distribués (Coda, etc.), les utilitaires de mise en miroir unidirectionnelle (rsync, etc.) et d'autres synchroniseurs (Intellisync, Réconcilier, etc.). Cependant, il existe plusieurs points où il diffère:

Chloe
la source
1
+1: Lorsque la synchronisation bidirectionnelle est requise, cela l'emporte clairement sur rsync, tout en ayant toutes ses fonctionnalités intéressantes.
ojdo
1

J'ai eu de la chance avec GoodSync avec deux PC sur le même LAN, mais je parie que cela fonctionnerait toujours bien dans votre situation.

Voici leur description du produit:

  • GoodSync synchronise les fichiers entre votre ordinateur, les appareils mobiles, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV, Azure.
  • GoodSync sauvegarde les fichiers sur des disques portables, des appareils mobiles et sur FTP, S3, GDocs, SkyDrive, DAV ou un autre ordinateur.
  • Synchronisation P2P directe: GoodSync Connect synchronise les fichiers directement entre vos ordinateurs, sans lenteur introduite par la synchronisation via des serveurs tiers.
  • GoodSync est très rapide et synchronise les fichiers sur votre commande, périodiquement, selon un calendrier ou en temps réel (lors d'un changement de fichier).

Vous n'avez besoin que de la configuration de GoodSync sur l'un de vos PC; il gère la synchronisation bidirectionnelle et le type de synchronisation qu'il fait est personnalisable. En outre, il est fortement recommandé par CNet.

Jon Onstott
la source
Salut Jon, pouvez-vous modifier votre réponse pour expliquer pourquoi GoodSync serait la solution idéale pour l'OP? En ce moment, il est très faible réponse de qualité, et ne fait pas répondre à la façon de la question. Merci
Canadian Luke REINSTATE MONICA
1

Une autre solution possible est AeroFS .

AeroFS synchronise les données de manière bidirectionnelle entre vos appareils tout en ne stockant que vos données sur vos appareils - vos données ne se rapprochent jamais de leurs serveurs. AeroFS conserve un historique des révisions de vos fichiers afin que vous puissiez revenir aux versions précédentes si nécessaire et il fournit un outil pour résoudre les conflits.

AeroFS fonctionne sur Windows, Mac, Linux, iOS et Android, il devrait donc vous avoir couvert.

chritohnide
la source
0

Donc, si vous n'êtes pas opposé au stockage cloud par principe, il existe deux solutions matérielles pour les disques externes:

Space monkey utilise un paradigme intéressant .. il alloue une partie de votre disque au stockage de petits morceaux de données d'autres personnes, et stocke également vos données sur de nombreux lecteurs d'autres personnes (cryptés, bien sûr). De cette façon, il y a beaucoup de redondance en cas de sinistre, et vos machines n'ont pas besoin de se voir ni même d'être connectées en même temps.

Le transporteur de fichiers est un peu plus simple, dans la mesure où les données ne sont synchronisées que sur d'autres lecteurs de transport de fichiers que vous avez spécifiquement configurés pour synchroniser.

Les deux options sont bonnes pour de grandes quantités de données, et vous n'achetez le matériel qu'une seule fois sans frais d'abonnement.

tfinniga
la source