Verwenden von RSYNC mit Amazon S3 [geschlossen]


39

Ich möchte Amazon S3 zum Sichern unserer ~ 100-GB-Server-Images verwenden (erstellt mit den Acronis-Sicherungstools).

Offensichtlich wäre das Hochladen auf S3 jede Nacht in Bezug auf Bandbreite und Kosten teuer. Ich überlege, ob ich rsync mit S3 verwenden soll, und bin auf s3rsync gestoßen. Ich habe mich nur gefragt, ob jemand Erfahrung mit diesem oder einem anderen Dienstprogramm hat.


1
Eine Sache, die mir bei s3rsync aufgefallen ist, ist, dass Sie derzeit auf 10 GB Bucket-Größen beschränkt sind (siehe FAQ). Sie können mehrere Buckets haben, aber Sie müssen Ihre Daten in 10-GB-Blöcke aufteilen.
Dana

Antworten:


35

Ich bin kürzlich über diesen Thread auf Google gestolpert und es sieht so aus, als ob sich die Landschaft ein wenig verändert hat, seitdem die Frage gestellt wurde. Die meisten der hier vorgeschlagenen Lösungen werden entweder nicht mehr gewartet oder sind kommerziell geworden.

Nach einigen Frustrationen bei der Arbeit mit FUSE und einigen anderen Lösungen entschied ich mich, einen eigenen Befehlszeilen-Rsync-Klon für S3 und Google Storage mit Python zu schreiben.

Sie können das Projekt auf GitHub auschecken: http://github.com/seedifferently/boto_rsync

Ein weiteres Projekt, auf das ich kürzlich aufmerksam gemacht wurde, ist "Duplizität". Es sieht etwas aufwändiger aus und ist hier zu finden: http://duplicity.nongnu.org/

Hoffe das hilft.

AKTUALISIEREN

Das Python-Team von AWS hat intensiv an einem Boto-basierten CLI-Projekt für seine Cloud-Services gearbeitet. Unter den enthaltenen Tools befindet sich eine Schnittstelle für S3, die die meisten Funktionen von boto-rsync dupliziert (und in vielerlei Hinsicht ersetzt):

https://github.com/aws/aws-cli

Insbesondere kann der syncBefehl so konfiguriert werden, dass er fast genau wie rsync funktioniert:

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html


toller Beitrag! Vielen Dank und ich werde Ihren Code bald ausprobieren. Hast du irgendwelche Must-Reads, um Python / Django zu lernen? Prost
iainlbc

Welche Vorteile / Unterschiede hat Ihr Programm gegenüber S3cmd und S3sync?
James McMahon

@JamesMcMahon s3cmd / s3sync sind umfassendere CLIs für S3 (Verwalten von Buckets, Auflisten von Inhalten usw.), während boto-rsync ausschließlich ein Versuch ist, rsync nachzuahmen.
Seth

Es gibt eine s3fs-Sicherung: github.com/s3fs-fuse/s3fs-fuse, die ziemlich gut funktioniert und mit rsync kombiniert werden kann. Ich bin mir jedoch nicht sicher, wie effizient sie ist.
Stanislav

Es wäre fantastisch, wenn Sie erklären könnten, wie "der Sync-Befehl so konfiguriert werden kann, dass er fast genau wie rsync funktioniert".
Trusktr

10

Ich hatte auch viel Glück mit S3cmd und S3sync , die beide kostenlos sind.


+1 für S3cmd -.-
fnkr

S3cmd hat ein Problem mit großen filenumbers (> 300k - Dateien) .. Es frisst etwa 1gig pro 100k - Dateien des Arbeitsspeichers so gut , dass die Beschränkung im Auge zu behalten ..
Tuxie

7

Abhängig davon, wie Ihre Acronis-Bilder erstellt werden, bin ich mir nicht sicher, ob Sie mit Rsync Bandbreite sparen können. Acronis-Bilder sind einzelne Dateien, sodass rsync sie nicht lesen kann, um nur das zu sichern, was sich geändert hat. Sie sind sich auch nicht sicher, welche Art von Server-Images Sie erstellen, aber da Sie 100 GB angegeben haben, gehe ich davon aus, dass sie voll sind? Ein inkrementelles Bild würde die nächtliche Bildgröße erheblich reduzieren und so Bandbreite sparen. Sie können die Bilder auch an einem anderen Ort als S3 speichern, z. B. auf einem Bandmedium, und diese außerhalb des Standorts speichern.


4
Nein, so funktioniert rsync nicht. Es funktioniert mit jedem Dateityp und benötigt keine Kenntnisse über die Interna der zu synchronisierenden Datei. Stattdessen werden Hashes von Teilen der Datei verglichen und nur die Teile übertragen, die sich unterscheiden. en.wikipedia.org/wiki/Rsync
Alan Donnelly

2
und keines der Spannfutter stimmt überein, da jede kleine Änderung der Dateien im Bild dazu führt, dass sich die gesamte Datei aufgrund der Komprimierung ändert. Selbst wenn die Komprimierung deaktiviert ist, bin ich mir nicht sicher, ob es gut für die rsync-Funktion geeignet ist, da die Reihenfolge der Dateien im Image geändert werden kann und sie fortlaufend übereinstimmen, anstatt nur ein gleiches Stück zu finden.
James Ryan

4

Ich habe S3rsync noch nie ausprobiert.

Ich verwende Duplicity für unsere Offsite-Backups. Es unterstützt inkrementelle Sicherungen auf S3, spart jedoch aufgrund des Amazon S3-Speicherprotokolls, bei dem Änderungen an Dateien Sie zwingen, die gesamte neue Datei erneut hochzuladen, nicht wirklich Bandbreite. Auf jeden Fall werden bei Duplicity nur die Unterschiede zum letzten inkrementellen Backup hochgeladen.

Mit Duplicity müssen Sie nicht wie mit S3sync über einen anderen Server gehen. Wenn Sie jedoch Ihre Daten verschlüsseln, sollte es sich lohnen, S3sync einmal auszuprobieren.


1

S3 verfügt außerdem über einen Add-On-Service namens AWS Import / Export, mit dem Sie ein USB-Laufwerk mit Ihrem ursprünglichen 100-GB-Datensatz an diese senden können, das sie mithilfe einiger Back-End-Tools in ihren Rechenzentren in die S3-Cloud laden. Sobald Ihre 100 GB verfügbar sind, können Sie jede Nacht differenzielle Sicherungen durchführen, um alle Änderungen zu sichern.

Die Website ist http://aws.amazon.com/importexport/

Wenn der Großteil Ihrer Daten relativ statisch ist, ist dies eine gute Option. Wenn sich die gesamten 100 GB Daten täglich ändern, hilft dies Ihnen nicht viel.


3
Wie nehmen Sie an, dass sie ein 128-GB-Flash-Laufwerk "laden"? Ich stelle mir den größten USB-Hub der Welt vor, ein bodentiefes Patchpanel mit USB-Anschlüssen, 3/4 voll mit vom Kunden bereitgestellten Flash-Laufwerken, die alle in die Rückseite eines einzelnen Blade-Servers passen.
Paul

Was für ein Bild !! In Wirklichkeit wahrscheinlich ein armer Kerl in einer dunklen Ecke eines Rechenzentrums mit Ihrem weltweit größten USB-Hub an seinem PC :)
monkeymagic

0

Sie können Minio Client aka "mc" versuchen . mc bietet minimale Tools für die Arbeit mit Amazon S3-kompatiblen Cloud-Speichern und Dateisystemen.

mc implementiert die folgenden Befehle

  ls        List files and folders.
  mb        Make a bucket or folder.
  cat       Display contents of a file.
  pipe      Write contents of stdin to one or more targets. When no target is specified, it writes to stdout.
  share     Generate URL for sharing.
  cp        Copy one or more objects to a target.
  mirror    Mirror folders recursively from a single source to many destinations.
  diff      Compute differences between two folders.
  rm        Remove file or bucket [WARNING: Use with care].
  access    Manage bucket access permissions.
  session   Manage saved sessions of cp and mirror operations.
  config    Manage configuration file.
  update    Check for a new software update.
  version   Print version.

Sie können den Befehl mirror verwenden, um Ihre Operation auszuführen. "localdir" ist das lokale Verzeichnis & S3 [Alias ​​für Amazon S3] und der Name "remoteDir" Ihres Buckets auf S3.

$ mc mirror localdir/ S3/remoteDir

Sie können auch einen Cronjob dafür schreiben. Auch im Falle eines Netzwerkverstoßes können Sie "$ mc session" verwenden, um den Upload von diesem bestimmten Zeitpunkt an neu zu starten.

PS: Ich trage zum Minio-Projekt bei und würde gerne Ihr Feedback und Ihren Beitrag erhalten. Ich hoffe es hilft.


-1

Die neue Jungle Disk Server Edition (Beta) könnte für Sie nützlich sein. Die Deduplizierung erfolgt auf Blockebene. Wenn Ihre Acronis-Bilder also etwas gemeinsam haben, wird der Umfang der zu sichernden Daten erheblich reduziert. Die Funktionen eignen sich perfekt für Server-Backups. Lesen Sie die Versionshinweise.

Ich habe die Beta zwei Wochen lang getestet und bin, abgesehen von einigen kleinen Problemen mit der Benutzeroberfläche, von denen ich sicher bin, dass sie im Finale behoben werden, sehr gespannt auf das Produkt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.