web-dev-qa-db-fra.com

Comment créer mon propre serveur Dropbox / Ubuntu One à la maison?

Est-ce que quelqu'un connaît des ressources qui peuvent me montrer comment créer mon propre serveur "Dropbox, Ubuntu One" à la maison?

J'aime beaucoup l'idée de ces services, mais je ne veux pas mettre mes "affaires" dans les nuages. Idéalement, il devrait avoir un client fonctionnant sous Linux et Windows.

J'ai essayé de configurer iFolder sur mon Ubuntu 10.04, mais sans succès jusqu'à présent.

70
user1978

Actuellement, il n'y a pas une excellente alternative open source qui va fonctionner immédiatement. La meilleure chose à surveiller est le projet sparkleshare: http://www.sparkleshare.org/

Espérons que cela deviendra une excellente solution, faites-le vous-même.

41
Rick

Il y en a vraiment beaucoup.

  • SparkleShare (deps: git/Subversion, mono, python) à l'adresse github Logiciel de synchronisation basé sur une interface graphique.

    une. Gestion des versions: via un système de contrôle de code source, par conséquent, il est basé sur un serveur central via un numéro de version.

    b. Etat: en développement

    c. Avantages: OSS, mono modifiable si facilement, inconvénients: processus de niveau utilisateur, protocole de partage inefficace, dépendant du GC, par ordre de grandeur, git étant principalement destiné aux petits fichiers texte, assez difficile à compiler (j'ai essayé). Utiliser des outils de haut niveau.

  • lipsync (deps: Unison, rsync) Logiciel basé sur un service en ligne de commande.

    une. Gestion des versions: via le rsync delta algoritm . Je suppose que le programmeur doit choisir la résolution de conflit.

    b. Etat: Je ne trouve pas son code source, donc je n'en ai aucune idée. Les seules choses dans son repo git sont des binaires.

    c. Avantages: belle configuration, en utilisant des outils de niveau moyen.

  • iFolder - Dropbox de Novell. Je n'ai pas encore étudié sa source. Je veux juste obtenir cette édition et si les gens sont intéressés, j'en ajouterai plus.

    une. Versioning:

    b. Etat: problématique de le compiler même sur Ubuntu, sans parler des paquets. Voici un guide d'installation détaillé .

    c. Avantages: client Windows X64, mature, intégration AD avec les ACL, fonctionnalités qu'aucun autre projet n'a commencé à implémenter. Je pense que cela pourrait être un bon point de départ. Inconvénients: Novell n'utilise peut-être pas son référentiel svn public comme référentiel principal et ne fait que des abandons de code. Je ne sais pas exactement à ce sujet cependant. Peut-être trop couplé à openSUSE pour une installation facile sur Ubuntu. Pour vérifier ses algorithmes.

  • scp/rcp - obsolète en faveur de rsync

  • DRDB - Blocage des outils de mise en miroir de périphériques pour RAID-1 distribué, c’est-à-dire une variante de serveur de la boîte de dépôt. Je n'ai pas encore vérifié son code source, mais c'est uniquement Linux. L'algorithme actuel serait probablement facile à combiner avec le code source dans mes réflexions sous cette liste de logiciels.

    une. Gestion des versions: format de message interne sur réseau local/étendu

    b. Etat: semble assez mature

    c. Avantages: assez stable pour Linux, les inconvénients: aucun autre système d'exploitation n'est pris en charge


Actuellement, je cherche à améliorer les temps de compilation sur un Windows 7 virtualisé, où le temps de compilation sur un Windows 7 sur métal est de 40 s, mais virtualisé à environ 3m 20. Je songe à écrire un pilote ioctl qui est un cache à écriture immédiate qui ressemble à un disque virtuel pour les dossiers sélectionnés sur NTFS.

En utilisant le logiciel ci-dessus, je pense qu'une semaine de développement à temps plein pour 2-3 personnes produirait un alpha utilisable qui ne perdrait pas vos fichiers en combinant les logiciels ci-dessus.


Sur mon système, l’idée générale serait alors:

  1. Montez un lecteur virtuel \? {GUID}, c’est-à-dire le disque virtuel et le cache RW. Le logiciel créant ce lecteur virtuel prend deux paramètres d'entrée (qui sont essentiels):

    une. Le dossier cible; Il s’agit du dossier SMB. Je laisserai donc la pile réseau du système d’exploitation gérer les entrées/sorties réelles. Dans mon cas, il s’agit du dossier virtuel VMWare, qui a en soi une cible sur un lecteur ext4, mais il pourrait facilement s'agir de votre serveur de fichiers utilisant SAMBA/SMB.

    b. Le chemin du dossier à monter, par exemple C:\disque virtuel

    Ce code pour la création de volumes virtuels doit provenir de code de TrueCrypt , dans /Driver/DriverFilter.c (entre autres fichiers)

  2. Le lecteur utilise le protocole SMB/VMWare/network pour récupérer les données au démarrage. il récupère avec une priorité de tâche faible, de manière asynchrone depuis le réseau et remplit son cache. Il pourrait utiliser un algorithme de compactage simple et avoir un thread qui utilise la transmission de type continuation de type boîte à message pour obtenir d'excellentes performances. Sous Windows, il pourrait utiliser les appels asynchrones normaux IO, et sous Linux, il pourrait utiliser l'implémentation epoll / inotify et récupérer le code de nginx .

  3. Mon service, le disque virtuel, monte le lecteur de disque virtuel non nommé en tant que dossier NTFS. Tous les programmes peuvent continuer à écrire sur C:\ramdisk, ou peu importe comment je l'appelle.

  4. Une copie async du réseau est toujours en cours. Avec un débit de lecture d'environ 100 Mio/s et deux GiB disque mémoire, il faudrait 20,5 s pour lire toutes les données.

Chaque appel à lire effectue un calcul de l’indice dans la CPU dans un tableau de taille fixe n: ulong GiB. Cela nécessiterait une résolution des conflits ou des verrous en lecture-écriture. Si nous implémentions un algorithme de résolution de conflit similaire à ceux disponibles via Microsoft Sync, nous pourrions transmettre chaque bloc en conflit en tant que message à un autre processus de résolution de conflit. Dropbox le résout en créant un nouveau fichier et en le nommant "Copie en conflit du nom d'utilisateur PrevFileName (aaaa-MM-jj) .ext". Cela pourrait peut-être être modifié via un petit widget, si celui-ci compile avec cette source unique - le widget détectera les modifications en suspens sous forme de messages/événements et choisira le protocole de résolution des conflits. En tant que tel, lors de la programmation sur un dossier en mode exclusif, Windows VM peut définir le widget sur "exclusif".

Cela aurait ces PRO

  • Ce serait non bloquant/async
  • Cela supposerait l'hypothèse mais ne nécessiterait pas qu'un ordinateur écrive principalement dans les fichiers.
  • Cela fonctionnerait pour des fichiers arbitrairement volumineux
  • Cela fonctionnerait sur * nix et Windows en reliant les projets mentionnés.
  • Cela fonctionnerait si une performance de lecture élevée était nécessaire (c'est-à-dire que les fichiers sont physiquement situés sur le disque).
  • Lorsque les événements en conflit sont atteints, vous pouvez fournir une application d’interface utilisateur permettant à l’utilisateur d’écrire/télécharger des plug-ins qui agissent de manière saine pour différents types d’événements - c’est-à-dire différents types de fichiers. Par exemple. un fichier texte pourrait être créé avec Kompare/WinDiff, tandis qu'un fichier binaire serait dupliqué et enregistré dans un autre fichier.
44
Henrik

OwnCloud ! Cela ressemble à quelque chose que vous recherchez.

18
Dinesh

j'ai entendu parler de Syncany sur le Podcast Ubuntu UK , actuellement en version bêta, mais on dirait qu'il répond aux exigences

5
deveneyi

Je ne pense pas que ce soit tout à fait ce que vous recherchez, mais cela dépend de l'utilisation que vous envisagez.

CrashPlan est un package de logiciel de sauvegarde et un service d’hébergement en ligne, mais la différence est que leur logiciel dispose d’un mode qui vous permet de sauvegarder vos données sur Internet (ou sur un réseau local) sur un autre ordinateur en fonctionnement. les logiciels.

Cela signifie que la destination ne doit pas nécessairement être dans le nuage. Ce n'est pas tout à fait comme une boîte de dépôt en ce sens qu'il s'agit davantage de sauvegarder que de synchroniser et d'accéder à des fichiers de partout, mais si vous ne voulez que des sauvegardes, cela fonctionne bien. Si vous souhaitez accéder aux fichiers sauvegardés à partir de l'autre PC, je pense que vous pouvez effectuer une "restauration locale", mais ce n'est pas quelque chose que j'ai essayé.

Le progiciel de base est gratuit et prend en charge le mode "Sauvegarde sur un autre ordinateur", mais ne fait que des sauvegardes programmées, mais il existe une version "pro" du logiciel qui coûte et effectue également une synchronisation en temps réel plutôt que les sauvegardes planifiées. (Le stockage en nuage est également un paiement facultatif par mois supplémentaire)

3
Simon P Stevens

J'utilise Unison pour le client et rsnapshot (rsync avec le script Perl) pour sauvegarder le serveur.

3
bassgey
2
guest442

Si vous souhaitez configurer deux machines (ou plus) avec un dossier répliqué, consultez glusterfs.

Il est facile à configurer si vous suivez le Guide de l'utilisateur GlusterFS .

2
Richard Holloway

Personne n'est mentionné bitorrent sync ? Fonctionne sur n'importe quoi - Ubuntu, Windows, de nombreux systèmes d'exploitation pour smartphone courants, Raspberry Pi…, vous l'appelez, cela fonctionne probablement, et en tant qu'utilisateur régulier. Les transferts cryptés, les fichiers ne sont pas stockés sur le cloud (bien que je pense que bittorrent utilise le suivi pour le suivre), assez rapidement, vous pouvez partager des dossiers de manière sélective, et pratiquement aucune complication n'est nécessaire, il vous suffit de copier et coller une clé à l'autre. système.

Une fois qu’il est installé, cela fonctionne.

2
Journeyman Geek

J'utilise Apache avec mod_dav (webdav) pour un serveur Web Apache, je peux le monter en tant que lecteur et télécharger/télécharger des fichiers sur le Web. C'est assez simple, mais pourrait couvrir vos besoins.

1
JurjenB

Je garde un oeil sur AeroFS . Il semble que ce pourrait être un service de type Dropbox où le stockage dans le cloud est facultatif. Je ne sais pas si/quand ils mettront en œuvre le support mobile et je suppose que cela nécessiterait également que vous synchronisiez ces fichiers dans le cloud. Je suis principalement intéressé par une solution de synchronisation relativement simple entre ordinateurs Windows, Mac et Linux.

Ils sont en début de bêta mais vous pouvez inscription pour une invitation si vous le souhaitez.

1
dempa

Bien qu’il existe déjà d’autres solutions intéressantes, c’est une question plus ancienne, je suis convaincu que ce sujet n’est clairement pas dépassé et, au contraire, prend de plus en plus d’importance, en raison des derniers événements qui ont porté atteinte à la vie privée.

Je veux donc partager ma propre expérience. Ma solution actuelle pour un environnement hébergé en nuage similaire est Seafile .

Caractéristiques de Seafile:

  • Accès au nuage basé sur le Web
  • Clients pour Linux, Windows, Mac, iOS (non gratuit), Android
  • Gestion des utilisateurs/groupes
  • Organisation des fichiers via différentes bibliothèques
  • Synchronisation automatique des fichiers via le logiciel client
  • Possibilité de publier des fichiers via la création de liens publics

Mes expériences Seafile:

  • L'installation a été facile et rapide! (sur une machine virtuelle debian slim, avec des fichiers stockés via le partage sur l'hôte physique dmraid 5)
  • Interface utilisateur propre et fonctionnelle
  • Logiciel client propre et fonctionnel
  • Il n'y avait aucun problème fonctionnel pour moi jusqu'à présent! (en utilisant cela depuis quelques semaines maintenant)
  • L'ensemble de fonctionnalités est basique (par rapport à owncloud, par exemple), mais j'insiste sur le fait que tout fonctionne ici!
  • Pas de support proxy direct (du moins pour le client Linux et l'interface web!). Remarque: l'interface Web fonctionne, mais le téléchargement de fichiers via l'interface Web ne fonctionne pas derrière un proxy - je ne sais pas si cela est possible

Comme je n'ai pas besoin de support proxy, je suis vraiment satisfait de Seafile!

1
Nicolas

J'utilise SSHFS pour monter des répertoires sur mon serveur en tant que répertoires locaux sur mon ordinateur de bureau et mon ordinateur portable. Toutes les modifications de fichiers sont enregistrées directement sur le serveur. Contrairement à Dropbox, les fichiers ne sont pas stockés localement sur vos ordinateurs clients. Je pense que c'est formidable car vous n'avez pas à vous soucier de la synchronisation et des versions, mais ce n'est pas idéal pour une utilisation hors connexion ou des fichiers très volumineux.

C'est très simple et direct, et je trouve que c'est la meilleure solution. La seule chose pour laquelle je ne l'utilise pas, ce sont les gros supports tels que les images et les films, car tous les fichiers sont accessibles via le réseau. Ceux que je synchronise avec Rsync.

Lien vers la documentation SSHFS -> http://Fuse.sourceforge.net/sshfs.html

0
Sam Swift