Wie verwende ich btrfs send / receive zum Übertragen von Backup-Snapshots über eine langsame und unzuverlässige Netzwerkverbindung?

11

Ich möchte die Sende- / Empfangsfunktion von btrfs verwenden, um Backup-Snapshots über eine relativ langsame (anfänglicher Startwert von ca. 50-100 GB, Upstream-Bandbreite von ~ 1-2 MBit / s) und unzuverlässige (tägliche erzwungene Unterbrechung an beiden Enden) Verbindung zu übertragen.

Ich sehe folgende Anforderungen:

  • verschlüsselte Übertragung (normalerweise mithilfe eines SSH-Tunnels)
  • Robustheit gegenüber unterbrochenen Verbindungen

Es scheint, dass ZFS unterbrochene Übertragungen automatisch fortsetzen kann , ähnlich wie bei rsync. Gilt das auch für BTRFS? Die Sende- / Empfangs-Wiki-Seite ist in Bezug auf unterbrochene Übertragungen nicht hilfreich. Wenn btrfs unterbrochene Übertragungen fortsetzen würde, müsste ich nur einen SSH-Tunnel verwenden und bei Unterbrechung fortsetzen.

Wenn nicht, müsste ich einen Puffer dazwischen verwenden, um sicherzustellen, dass die btrfs-Verbindung Interrupts überlebt, oder beide Server zum Seeding nahe beieinander bringen (was ein Problem in Bezug auf hinzugefügte Dateien ist, die die tägliche Übertragung übertreffen Kapazitäten und Senden von Schnappschüssen).

Was muss ich beachten, um den Startwert und die Schnappschüsse zu übertragen?

Jens Erat
quelle

Antworten:

8

Ich benutze "btrfs send" für Backups für eine Weile. Es wird nicht die Wiederaufnahme unterbrochener Übertragungen behandelt. Ich habe ein Dienstprogramm geschrieben, das die Übertragung fortsetzt und Snapshots im lokalen btrfs-Dateisystem automatisch mit Amazon S3 synchronisiert. Sie können es gerne ausprobieren, um zu sehen, ob es hilft, und ich würde mich über Feedback freuen! Es ist sowohl auf GitHub ( https://github.com/AmesCornish/buttersink ) als auch auf PyPi ( https://pypi.python.org/pypi/buttersink/ ).

user80646
quelle
Werde mir das auf jeden Fall ansehen, sobald ich etwas Freizeit habe. Ihre Readme-Datei besagt, dass das SSH-Backend noch nicht implementiert ist. Dies bedeutet, dass sich die Synchronisierung mit einem Remote-BTRFS-Dateisystem noch in der Warteschlange befindet.
Jens Erat
klingt gut, aber leider brauche ich auch SSH, damit es nützlich ist.
Matthias Urlichs
2
SSH-Backend ist jetzt implementiert (ab 0.6)
user80646
4

"senden" an eine Datei oder über eine Pipe. "empfangen" mit der Datei oder Pipe am anderen Ende. Mit einer fragwürdigen Verbindung würden Sie wahrscheinlich am besten mit Dateien und einem Transport wie rsync umgehen.

user66738
quelle
1
Richtig, es ist sogar möglich, die Datei in mehrere Teile aufzuteilen. Es kann besser für rsync sein, eine unterbrochene Übertragung fortzusetzen (oder das --partial mit rsync zu verwenden)
ascobol
1

Unterstützt zusätzlich zum buttersinkS3-Lebenslauf btrbk:

Wiederaufnahme der Sicherungen (wenn das Sicherungsziel für eine Weile nicht erreichbar war)

Bearbeiten: Ich habe seitdem erfahren, dass die Übertragung einzelner Snapshots nicht fortgesetzt wird btrbk, es wird jedoch das Sicherungsziel behandelt, das offline geschaltet wird (Neustart der Übertragung des unterbrochenen Snapshots).

Tom Hale
quelle
Ich werde auf jeden Fall einen Blick darauf werfen btrbkund wie es die Wiederaufnahme von Übertragungen implementiert, obwohl ich die Wahl der Programmiersprache etwas ablehne - aber es scheint so ziemlich den Funktionsumfang zu implementieren, den ich benötige.
Jens Erat