Ich verstehe, wie Rsync auf hoher Ebene funktioniert, aber es gibt zwei Seiten. Mit S3 gibt es keinen Dämon, von dem die Rede sein könnte - na ja, aber im Grunde ist es nur HTTP.
Es scheint einige Ansätze zu geben.
s3rsync (aber das schraubt nur rsync an s3 an). Einfach. Ich bin mir nicht sicher, ob ich auf etwas drittes angewiesen bin. Ich wünschte, S3 unterstützt nur Rsync.
Es gibt auch einige rsync "Klone" wie Duplicity, die behaupten, s3 ohne das besagte Bolt-On zu unterstützen. Aber wie kann es das tun? Halten sie eine Indexdatei lokal? Ich bin mir nicht sicher, wie das so effizient sein kann.
Ich möchte natürlich s3 verwenden, weil es billig und zuverlässig ist, aber es gibt Dinge, für die rsync das Werkzeug ist, wie das Sichern eines riesigen Verzeichnisses von Bildern.
Welche Möglichkeiten gibt es hier? Was verliere ich durch die Verwendung von duplicity + s3 anstelle von rsync + s3rsync + s3?
Antworten:
Da diese Frage dort wurde zuletzt beantwortet, ist ein neues AWS Kommandozeilen - Tool,
aws
.Es kann rsync-ähnlich zwischen lokalem Speicher und s3 synchronisieren . Anwendungsbeispiel:
Wenn die Python-Umgebung Ihres Systems ordnungsgemäß eingerichtet ist, können Sie den AWS-Client folgendermaßen installieren
pip
:quelle
rsync
und es dauerte durchschnittlich 1 Sekunde, wobei nur die Änderungen über meine langsame Verbindung hinausgingen.aws s3 sync
Auf der anderen Seite dauerte es ungefähr 5 Minuten, bis alle Dateien erneut übertragen wurden.Das s3cmd-Tool hat eine großartige
sync
Option. Ich verwende es, um lokale Backups zu synchronisieren, mit etwas wie:Das
--skip-existing
bedeutet, es wird nicht versucht, die vorhandenen Dateien mit einer Prüfsumme zu vergleichen. Wenn es bereits eine Datei mit diesem Namen gibt, überspringt sie diese schnell und fährt fort. Es gibt auch eine--delete-removed
Option, mit der nicht lokal vorhandene Dateien entfernt werden, aber ich möchte S3 auch dann beibehalten, wenn ich sie lokal bereinigt habe, damit ich sie nicht verwende.quelle
Ich möchte niemandem sagen, was zu tun ist, aber darf ich eine Fahne wegen Doppelspurigkeit schwenken? oder eine andere inkrementelle Sicherungslösung. Die Synchronisierung funktioniert einwandfrei. Wenn Sie jedoch nachts ein Backup durchführen, was passiert, wenn Sie das Problem zwei Tage lang nicht bemerken? Antwort: Es ist zu spät, Ihre lokalen Dateien und Ihr Backup sind ein Spiegel von einander und haben weder die Daten, die Sie benötigen. Sie sollten wirklich inkrementelle Sicherungen oder Snapshots in Betracht ziehen, damit Sie sich zu einem bestimmten Zeitpunkt erholen können. Um dies effizient zu tun, benötigen Sie inkrementelle Sicherungen. Und wenn der Verlust Ihrer Daten das Ende des Weltszenarios darstellt, bewahren Sie Kopien bei verschiedenen Anbietern auf, da Sie nie wissen, dass sie verloren gehen und gehackt werden können, wer weiß.
Ich benutze Duplicity und S3, es ist in Ordnung, aber CPU-intensiv. Es werden jedoch inkrementelle Sicherungen durchgeführt. In einem Notfall, wenn Sie ein Verzeichnis oder eine bestimmte Datei wiederherstellen möchten, wie es am vergangenen Mittwoch oder im letzten Januar war, ohne die anderen Dateien auf derselben Partition wiederherzustellen, benötigen Sie inkrementelle Sicherungen und ein Tool, mit dem Sie nur die Dateien anfordern können, die Sie benötigen.
Ich habe einen Cron, der alle x Monate voll ist, andernfalls inkrementell und löscht alle Daten, die älter als x Monate sind, um die Gesamtsumme des s3-Speichers niedrig zu halten. Sie müssen es regelmäßig im Auge behalten, damit Sie feststellen können, dass Ihr Backup nicht funktioniert.
Es ist ein erheblicher lokaler Speicherplatz erforderlich, um die lokalen Signaturen beizubehalten. Richten Sie daher das temporäre Verzeichnis sorgfältig ein. Diese Backups / mnt, ohne verschiedene Verzeichnisse innerhalb / mnt. Dies ist gut zum Sichern von Daten geeignet. Verwenden Sie für Systempartitionen Amazon Imaging- oder Snapshot-Tools.
PHP-Skript:
quelle
S3 ist ein universelles Objektspeichersystem, das Ihnen genügend Flexibilität bietet, um zu planen, wie Sie es verwenden möchten.
Ich bin mir aufgrund Ihrer Frage nicht sicher, auf welche Probleme mit rsync (außer der Indizierung) oder mit dem Drittanbieter-Tool Sie gestoßen sind.
Wenn Sie eine große Anzahl von Dateien haben, die gut strukturiert sind, können Sie mehrere S3-Synchronisierungen in Ihren Unterordnern ausführen.
Die netten Leute bei Amazon ermöglichen Ihnen auch den Import / Export von Ihrer tragbaren Festplatte für die Übertragung großer Dateien zu S3 oder EBS - http://aws.amazon.com/importexport/, die Sie für den ersten Upload verwenden können.
Hier finden Sie bewährte Vorgehensweisen für Amazon s3: http://aws.amazon.com/articles/1904
Probieren Sie die verschiedenen Tools aus und finden Sie heraus, welche für Sie am besten geeignet sind. In Bezug auf die Preisgestaltung gibt es reduzierte Redundanzpreise, wenn dies Ihren Anforderungen entspricht - http://aws.amazon.com/s3/pricing/
Allgemeine Empfehlung - Haben Sie eine schnelle Multicore-CPU und eine gute Netzwerk-Pipe.
UPDATE: Hinweis zur Prüfsumme in S3
In Bezug auf S3 werden Daten in Schlüsselwertpaaren gespeichert, und es gibt kein Konzept für Verzeichnisse. S3sync überprüft die Prüfsumme (S3 hat einen Mechanismus zum Senden der Prüfsumme als Header zur Überprüfung - Content-MD5-Header). Die Best Practices für die Verknüpfung von Datenintegrität enthalten detaillierte Informationen. Mit S3 können Sie Prüfsummen senden / überprüfen und abrufen. Es gibt viele Leute, die inkrementelle Backups mit Dubletten durchführen. Obwohl auf S3 kein rsync ausgeführt wird, können Sie Prüfsummen erstellen, wie hier erwähnt.
rsync ist ein bewährtes Tool und die meisten modernen Tools verwenden denselben Algorithmus oder dieselbe rsync-Bibliothek oder rufen rsync extern auf.
quelle
Sie können alternativ auch den Minio-Client aka mc verwenden. Mit dem Befehl 'mc mirror' erledigen Sie die Aufgabe.
Sie können ein einfaches Skript als Cronjob schreiben, das in regelmäßigen Abständen eine Synchronisierung durchführt.
Ich hoffe es hilft.
quelle
-w
jetzt auch eine Flagge, mit derfsnotify
nach Änderungen gesucht werden kann. Es kann einfach als Systemdienst oder ähnliches eingerichtet werden.Ich bin nicht sicher, ob echtes Rsync gut zu Amazon passt.
Wie ich es verstehe, bedeutet der Standard-Rsync-Algorithmus, dass der Client Hashes für jeden Block einer Datei berechnet und der Server Hashes für seine Kopie sendet und diese Hashes an den Client sendet, was bedeutet, dass der Client bestimmen kann, welche Blöcke geändert wurden und hochgeladen werden müssen.
Dies führt zu zwei Problemen für Amazon, da viele Hashes über das Internet gesendet werden müssen und außerdem Rechenleistung für die Berechnung all der Hashes benötigt wird, die die Kosten für Amazon erhöhen würden. Dies ist wahrscheinlich der Grund, warum sie es Drittanbietern überlassen, die dies können Für diese Funktion wird eine zusätzliche Gebühr erhoben.
Was die Klone betrifft, speichern sie die Hashes offensichtlich irgendwo und das irgendwo kann abhängig vom Klon variieren. Es wäre für sie möglich, die Hashes als separates Objekt pro Datei bei Amazon oder als Datenbank bei Amazon zu speichern, oder sie könnten sie lokal und remote speichern.
Es gibt Vor- und Nachteile, es so oder so zu machen. Wenn die Hashes remote in einzelnen Dateien gespeichert werden, kann es kostspielig sein, sie kontinuierlich abzurufen. Wenn die Hashes remote in einer Datenbank gespeichert werden, kann diese Datenbank sehr umfangreich werden und es kann kostspielig sein, sie kontinuierlich abzurufen und zu aktualisieren. Wenn die Hashes lokal gespeichert werden, trägt dies zur Kostensenkung bei, führt jedoch zu weiteren Komplikationen und Problemen.
(Natürlich hat Amazon noch andere Dienste, daher wäre es möglich, eine Datenbank in Amazon DB zu führen.)
Als Beispiel habe ich vor vielen Jahren einen frühen rsync-Klon ausprobiert. Dies wurde nicht geschrieben, um die Preisstruktur von Amazon zu berücksichtigen, und es wurden viele http-Zugriffe ausgegeben, um den Hash jedes Blocks abzurufen. Da Amazon für jeden Zugriff eine Gebühr berechnet, bedeutete dies, dass der Speicherteil meiner Rechnung stark abfiel, der Übertragungsteil aufgebläht.
Sie verlieren die Tatsache, dass Sie mit rsync wissen, dass Sie Quelldateien mit Ihren Sicherungsdateien vergleichen. Mit duplicity und anderen Klonen vergleichen Sie Ihre Quelldateien mit einem Hash, der bei der Sicherung erstellt wurde. Beispielsweise kann es möglich sein, direkt auf S3 zuzugreifen und eine seiner Dateien zu ersetzen, ohne den Hash neu zu berechnen oder die Hash-Datenbank zu aktualisieren.
quelle
Nachdem ich mehrere in diesem Thread erwähnte Optionen verglichen hatte, entschied ich mich für S3fs. Sie können S3 als lokales Dateisystem einbinden. Sie können dann fortfahren und rsync so verwenden, wie Sie es bereits kennen.
Dies ist ein gutes Tutorial für den Einstieg: Amazon S3 mit Rsync
Der Autor verwendete zuvor das erwähnte s3sync, wechselte dann aber zur Option mit S3Fs. Ich mag es, weil ich auch andere Sicherungsordner lokal über SSHFS bereitgestellt habe.
quelle