Wie erstelle ich meinen eigenen Dropbox / Ubuntu One-Server zu Hause?

70

Kennt jemand Ressourcen, die mir zeigen, wie ich meinen eigenen "Dropbox, Ubuntu One" -Server zu Hause erstellen kann?

Die Idee mit diesen Diensten gefällt mir sehr gut, aber ich möchte mein "Zeug" nicht in die Wolken stecken. Idealerweise sollte ein Client vorhanden sein, der unter Linux und Windows ausgeführt wird.

Ich habe versucht, iFolder auf meinem Ubuntu 10.04 einzurichten, aber bisher ohne Erfolg.

user1978
quelle
Ich bin mir nicht sicher, ob ich das Problem verstehe. Was ist los mit Dropbox?
Oli
Es gibt einige Speicherbeschränkungen und mit vielen Mitarbeitern in vielen Projekten gehen die bezahlten 50 GiB ziemlich schnell verloren.
Henrik
4
Es kann unvorhergesehene Konsequenzen haben, wenn Unternehmen wie Dropbox unsere personenbezogenen Daten speichern. Zum Glück läuft derzeit ein Projekt , um ein Betriebssystem zu entwickeln, mit dem Sie Ihre eigene persönliche Cloud auf einem ARM-Computer im Plug-Style ausführen können.
Daithib8
2
Ironischerweise ist das nicht so einfach wie eine sudo apt-get install ubuntu-one-server.
Prateek

Antworten:

41

Derzeit gibt es keine großartige Open-Source-Alternative, die sofort funktioniert. Am besten ist das Sparkleshare-Projekt im Auge zu behalten: http://www.sparkleshare.org/

Hoffentlich wird das zu einer großartigen Alternative.

Rick
quelle
2
Leider wird Git DVCS als Backend verwendet, das nicht für ~ 1 TB Binärdaten geeignet ist, da durch Änderungen an Binärdaten der Speicherplatz des Servers aufgebläht wird. Aber daneben sieht es vielversprechend aus.
Mathe
44

Es gibt tatsächlich viele von ihnen.

  • SparkleShare (abhängig von git / subversion, mono, python) bei github GUI-basierter Synchronisationssoftware.

    ein. Versionierung: über ein Versionsverwaltungssystem, daher Mutex-basiert auf einem zentralen Server über eine Versionsnummer.

    b. Zustand: in Entwicklung

    c. Vorteile: OSS, monobasiert, so einfach zu ändern, Nachteile: Prozess auf Benutzerebene, GC-abhängiges, ineffektives Freigabeprotokoll in Größenordnungen, da Git hauptsächlich für kleine Textdateien gedacht ist, die ziemlich schwer zu kompilieren sind (ich habe es versucht). Verwenden von Tools auf hoher Ebene.

  • lipsync (deps: Unison, rsync) Dienstbasierte Befehlszeilensoftware.

    ein. Versionierung: über den Rsync-Delta-Algorithmus . Ich gehe davon aus, dass der Programmierer die Konfliktlösung wählen muss.

    b. Status: Ich kann den Quellcode nicht finden, daher habe ich keine Ahnung. Die einzigen Dinge in seinem Git Repo sind Binaries.

    c. Vorteile: Nettes Setup mit Tools der mittleren Ebene.

  • iFolder - Novells Dropbox. Ich habe die Quelle noch nicht untersucht. Ich möchte nur diese Bearbeitung hinter mich bringen und wenn die Leute interessiert sind, füge ich noch mehr hinzu.

    ein. Versionierung:

    b. Status: Problematisch, es sogar unter Ubuntu zu kompilieren, geschweige denn Pakete. Hier ist eine ausführliche Installationsanleitung .

    c. Vorteile: Windows X64-Client, ausgereift, AD-Integration mit ACLs, Funktionen, mit deren Implementierung kein anderes Projekt begonnen hat. Ich denke, das könnte ein guter Ausgangspunkt sein. Nachteile: Novell verwendet sein öffentliches SVN-Repo möglicherweise nicht als primäres Repo und löscht nur Code. Ich weiß aber nicht genau darüber Bescheid. Könnte zu stark an openSUSE gekoppelt sein, um auf Ubuntu installiert zu werden. Um seine Algorithmen zu überprüfen.

  • scp / rcp - zugunsten von rsync veraltet

  • DRDB - Block Device Mirroring Tools für verteiltes RAID-1, dh eine Server-Variante von Dropbox. Ich habe den Quellcode noch nicht ausgecheckt, aber es ist nur Linux. Der eigentliche Algorithmus wäre wahrscheinlich einfach mit dem Quellcode in meinen Überlegungen unterhalb dieser Softwareliste zu kombinieren.

    ein. Versionierung: Internes Nachrichtenformat über LAN / WAN

    b. Zustand: scheint reif genug zu sein

    c. Vorteile: Stabil genug für Linux, Nachteile: Es werden keine anderen Betriebssysteme unterstützt


Im Moment untersuche ich die Verbesserung der Kompilierungszeiten auf einem virtualisierten Windows 7, wobei die Kompilierungszeiten auf einem Windows 7 auf Metall 40 s betragen, aber ca. 3 m 20 s virtualisiert sind. Ich überlege, einen ioctl-Treiber zu schreiben, der ein Durchschreibecache ist, der wie eine RAM-Disk für ausgewählte Ordner in NTFS aussieht.

Unter Verwendung der oben genannten Software würde eine Woche im Wert von 2-3 Vollzeit-Entwicklungsmitarbeitern einen brauchbaren Alpha-Code erzeugen, der Ihre Dateien nicht durch die Kombination der oben genannten Software verliert.


Auf meinem System wäre dann die allgemeine Idee;

  1. Mounten Sie ein virtuelles Laufwerk \? {GUID}, das ist die RAM-Disk und der RW-Cache. Die Software, die dieses virtuelle Laufwerk erstellt, verwendet zwei wichtige Eingabeparameter:

    ein. Den Zielordner; Dies ist der SMB-Ordner, daher überlasse ich dem Netzwerkstapel des Betriebssystems die eigentliche E / A. In meinem Fall ist dies wiederum der virtuelle VMWare-Ordner, der selbst ein Ziel auf einem ext4-Laufwerk hat, aber es könnte leicht Ihr Dateiserver sein, der SAMBA / SMB verwendet.

    b. Der Pfad des Ordners, der gemountet werden soll, zB C: \ ramdisk

    Dieser Code zum Erstellen virtueller Volumes stammt aus dem TrueCrypt-Code in /Driver/DriverFilter.c (unter anderem).

  2. Das Laufwerk verwendet SMB / das VMWare / Netzwerk-Protokoll, um beim Start Daten abzurufen. Es ruft mit niedriger Task-Priorität asynchron vom Netzwerk ab und füllt den Cache. Es könnte einen einfachen Komprimierungsalgorithmus verwenden und einen Thread haben, der die Weitergabe von Nachrichtenboxtypen verwendet, um eine hervorragende Leistung zu erzielen. Unter Windows könnte es die normalen asynchronen E / A- Aufrufe verwenden, und unter Linux könnte es die epoll / inotify- Implementierung verwenden und Code von nginx übernehmen .

  3. Mein Dienst, der die RAM-Disk ist, stellt das unbenannte RAM-Disk-Laufwerk als NTFS-Ordner bereit. Alle Programme können weiterhin auf C: \ ramdisk schreiben oder wie auch immer ich es nenne.

  4. Die asynchrone Kopie aus dem Netzwerk ist noch nicht abgeschlossen. Bei einer Lesegeschwindigkeit von ca. 100 MiB / s und 2 GiB Ramdisk wären es 20,5 s, um alle Daten zu lesen.

Jeder Aufruf zum Lesen würde eine In-CPU-Berechnung des Index in einem festen Array mit einer maximalen Größe von n: ulong GiB durchführen. Es würde jedoch eine Konfliktlösung oder Schreib- / Lesesperren erfordern. Wenn wir einen Konfliktlösungsalgorithmus implementieren würden, wie er über Microsoft Sync verfügbar ist, könnten wir jeden Block, der Konflikte verursacht, als Nachricht an einen anderen Konfliktlösungsprozess übergeben. Dropbox löst das Problem, indem eine neue Datei erstellt und "PrevFileName Username's Conflicted Copy (jjjj-MM-tt) .ext" genannt wird. Möglicherweise könnte dies durch ein kleines Widget geändert werden, wenn eine Kompilierung mit dieser einzelnen Quelle durchgeführt wird. Das Widget würde ausstehende Änderungen als Nachrichten / Ereignisse erkennen und das Konfliktlösungsprotokoll auswählen. Daher kann die Windows-VM beim Programmieren mit einem Ordner im exklusiven Modus das Widget auf "exklusiv" setzen.

Dies hätte diese PROs

  • Es wäre nicht blockierend / asynchron
  • Es würde die Annahme treffen, aber nicht erfordern, dass ein Computer hauptsächlich in die Dateien schreibt.
  • Es würde für beliebig große Dateien funktionieren
  • Es würde auf * nix und Windows funktionieren, indem die genannten Projekte zusammengefügt würden.
  • Dies funktioniert, wenn eine hohe Leseleistung erforderlich ist (dh die Dateien befinden sich physisch auf der Festplatte).
  • Wenn die widersprüchlichen Ereignisse erreicht sind, kann eine Benutzeroberflächen-App bereitgestellt werden, mit der der Benutzer Plug-ins schreiben / herunterladen kann, die für verschiedene Arten von Ereignissen - dh für verschiedene Arten von Dateien - geeignet sind. Beispielsweise könnte eine Textdatei mit Kompare / WinDiff aufgerufen werden, während eine Binärdatei dupliziert und als eine andere Datei gespeichert würde.
Henrik
quelle
Der bin-Ordner von lipsync enthält Shell-Skripte, keine Binärdateien.
Haggai_e
5

Ich habe im Ubuntu UK Podcast von Syncany gehört , derzeit als Beta- Version , aber es scheint , als würde es die Anforderungen erfüllen

deveneyi
quelle
Gute Idee, freien Webspace zu nutzen, egal welches Protokoll ursprünglich vorgesehen war :)
math
3

Ich glaube nicht, dass dies genau das ist, wonach Sie suchen, aber es hängt von Ihrer beabsichtigten Verwendung ab.

CrashPlan ist ein Backup-Softwarepaket und ein zugehöriger Online-Backup-Hosting-Dienst. Der Unterschied besteht jedoch darin, dass die Software über einen Modus verfügt, mit dem Sie Ihre Daten über das Internet (oder LAN) auf einem anderen PC sichern können, auf dem die Software ausgeführt wird.

Dies bedeutet, dass sich das Ziel nicht in der Cloud befinden muss. Es ist nicht ganz wie bei Dropbox, da es eher um das Sichern als um das Synchronisieren und Zugreifen auf Dateien von überall geht. Wenn Sie auf die gesicherten Dateien von einem anderen PC aus zugreifen möchten, können Sie wahrscheinlich eine "lokale Wiederherstellung" durchführen, aber ich habe es nicht versucht.

Das Basissoftwarepaket ist kostenlos und unterstützt den Modus "Sicherung auf einen anderen Computer". Es werden jedoch nur geplante Sicherungen durchgeführt. Es gibt jedoch eine "Pro" -Version der Software, die nicht nur die geplanten Sicherungen, sondern auch die Echtzeitsynchronisierung kostet und ausführt. (Cloud-Speicher ist auch eine optionale zusätzliche Zahlung pro Monat)

Simon P Stevens
quelle
3

Ich benutze Unison für den Client und rsnapshot (rsync mit Perl-Skript) zum Sichern des Servers.

Bassgey
quelle
2

Sehen Sie, ob dies hilft:

http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/

guest442
quelle
-1 Ich denke nicht, dass dies die beste Lösung ist und daher auch nicht die Antwort.
Henrik
-1 Dies ist ein Rsync-Server keine Dropbox-ähnliche Lösung ...
Arman
1
Diese Lösung ist nur eingeschränkt hilfreich, da sie einfach auf einen anderen Artikel verweist und das Risiko von Linkrot besteht. Diese Antwort sollte so bearbeitet werden, dass sie aussagekräftiger ist, wobei lediglich der angegebene Link als Quelle angegeben wird.
Christopher Kyle Horton
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Tim
2

Wenn Sie zwei (oder mehr) Computer mit einem replizierten Ordner einrichten möchten, schauen Sie sich glusterfs an.

Es ist einfach einzurichten, wenn Sie dem GlusterFS-Benutzerhandbuch folgen .

Richard Holloway
quelle
Wollen Sie damit sagen, dass innerhalb eines GlusterFS-Clusters Dateien synchronisiert werden, während die Clients mit anderen verbunden sind, das Dateisystem jedoch weiterhin lokal für einen Client verfügbar ist, der nicht mit den anderen verbunden ist? Ich denke darüber nach, dies zu verwenden, um zwischen meinem Laptop und dem Server zu synchronisieren.
Ryan Thompson
Ja. Ich habe meine Tests noch nicht beendet, aber es scheint ohne Probleme zu funktionieren.
Richard Holloway
Dies funktioniert nicht unter Windows und ist daher nicht "Dropbox-kompatibel".
Henrik
2

Niemand erwähnte Bitorrent-Synchronisation ? Läuft auf allem - Ubuntu, Windows, vielen gängigen Smartphone-Betriebssystemen, Himbeer-Pi .... Sie nennen es, es funktioniert wahrscheinlich und als normaler Benutzer. Verschlüsselte Übertragungen, Dateien werden nicht in der Cloud gespeichert (obwohl ich denke, dass Bittorrent den Tracker dafür ausführt), Sie können Ordner selektiv freigeben, und fast ohne Komplikationen müssen Sie nur einen Schlüssel kopieren und in den anderen einfügen System.

Sobald es eingerichtet ist, funktioniert es einfach.

Geselle Geek
quelle
1

Ich behalte AeroFS im Auge . Es sieht so aus, als könnte es sich um einen Dropbox-ähnlichen Dienst handeln, bei dem die Speicherung in der Cloud optional ist. Ich weiß nicht, ob / wann sie mobile Unterstützung implementieren, und ich vermute, dass Sie diese Dateien auch mit der Cloud synchronisieren müssen. Ich interessiere mich hauptsächlich für eine ziemlich schmerzlose Synchronisierungslösung zwischen Windows-, Mac- und Linux-Computern.

Sie befinden sich in der frühen Beta- Phase, aber Sie können sich bei Bedarf für eine Einladung anmelden .

dempa
quelle
1

Ich verwende Apache mit mod_dav (webdav) für einen Apache-Webserver. Ich kann es als Laufwerk mounten und Dateien über das Web hochladen / herunterladen. Dies ist ziemlich einfach, deckt aber möglicherweise Ihre Bedürfnisse ab.

JurjenB
quelle
1

Obwohl hier bereits interessante Alternativen aufgeführt sind und dies eine ältere Frage ist, bin ich überzeugt, dass dieses Thema eindeutig nicht veraltet ist und im Gegenteil aufgrund der letzten datenschutzverletzenden Ereignisse immer mehr an Bedeutung gewinnt.

Ich möchte daher meine eigenen Erfahrungen teilen. Meine aktuelle Lösung für eine eigene gehostete Cloud-ähnliche Umgebung ist Seafile .

Seafile-Funktionen:

  • Webbasierter Cloud-Zugriff
  • Clients für Linux, Windows, Mac, iOS (nicht kostenlos), Android
  • Benutzer- / Gruppenverwaltung
  • Dateiorganisation über verschiedene Bibliotheken
  • Automatische Dateisynchronisation über Client-Software
  • Möglichkeit zum Veröffentlichen von Dateien über das Erstellen von öffentlichen Links

Meine Seafile-Erfahrungen:

  • Die Installation war kinderleicht und schnell! (auf einem schlanken Debian-VM mit Dateien, die über die Freigabe auf dem physischen Host gespeichert wurden, dmraid 5)
  • Benutzeroberfläche sauber und funktional
  • Client-Software sauber und funktionsfähig
  • Bis jetzt gab es keine funktionellen Probleme für mich! (benutze das jetzt seit ein paar Wochen)
  • Das Feature-Set ist grundlegend (im Vergleich zu zB owncloud), aber ich betone, dass hier alles funktioniert!
  • Keine direkte Proxy-Unterstützung (zumindest für den Linux-Client - und das Webinterface!). Hinweis: Das Webinterface funktioniert, aber das Herunterladen von Dateien über das Webinterface funktioniert nicht hinter einem Proxy - ich weiß nicht, ob dies irgendwie möglich ist

Da ich keine Proxy-Unterstützung benötige, bin ich mit Seafile sehr zufrieden!

Nicolas
quelle
0

Ich verwende SSHFS, um Verzeichnisse auf meinem Server als lokale Verzeichnisse auf meinem Desktop und Laptop bereitzustellen. Alle Dateiänderungen werden direkt auf dem Server gespeichert. Im Gegensatz zu Dropbox werden die Dateien jedoch nicht lokal auf Ihren Client-Computern gespeichert. Ich finde das großartig, weil Sie sich nicht um die Synchronisierung und Versionierung kümmern müssen, aber es ist nicht ideal für die Offline-Verwendung oder für sehr große Dateien.

Es ist sehr direkt und einfach und ich finde es die beste Lösung. Das einzige, wofür ich es nicht benutze, sind große Medien wie Bilder und Filme, da auf alle Dateien über das Netzwerk zugegriffen wird. Die synchronisiere ich mit Rsync.

Link zur SSHFS-Dokumentation -> http://fuse.sourceforge.net/sshfs.html

Sam Swift
quelle