dd backup on the fly komprimieren

23

Vielleicht klingt dies wie eine dumme Frage, aber die Art und Weise, wie ich es versuche, funktioniert nicht.

Ich habe eine Live-CD, das Laufwerk ist nicht eingehängt usw.

Wenn ich auf diese Weise sichern

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... Normalerweise würde es funktionieren, aber ich habe nicht genug Platz auf der externen Festplatte, auf die ich kopiere (es passt fast hinein). Also wollte ich auf diese Weise komprimieren

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... aber ich habe die Erlaubnis verweigert. Ich verstehe nicht

Phil
quelle
2
Nicht. Dies ist kein Backup. Überprüfen Sie die Befehle 'dump' und 'restore'.
Juliano
Oder Teer oder CPIO ....
Chris
1
Juliano, was meinst du mit "das ist kein Backup"?
Phil
5
Dies ist keine Sicherung, da Sicherungen seriös und gut strukturiert sind und geeignete Tools zum Erstellen von Sicherungen verwenden. Sie erstellen lediglich eine Kopie der Rohdaten einer Partition. Um diese Daten wiederherzustellen, benötigen Sie eine weitere Partition mit derselben Geometrie, die nicht garantiert werden kann. Wenn Sie einen einzelnen Block Ihres Archivs beschädigen (Superblock, Inode-Tabellen, Stammverzeichnis usw.), besteht die Gefahr, dass Sie alle Ihre Daten verlieren. Mit einer ordnungsgemäßen Sicherung würde dies nicht passieren.
Juliano
7
"Um diese Daten wiederherzustellen, benötigen Sie eine weitere Partition mit der gleichen Geometrie, was nicht garantiert ist." Warum sollte er das brauchen, kann er das Partitions-Image nicht auf einem Loopback-Gerät mounten?
Kyle Brandt

Antworten:

41

Haben Sie Zugriff auf die Datei sda2-backup ... gz? Sudo arbeitet nur mit dem Befehl danach und gilt nicht für die Umleitung. Wenn Sie möchten, dass es auf die Umleitung angewendet wird, führen Sie die Shell als root aus, damit alle untergeordneten Prozesse ebenfalls root sind:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Alternativ können Sie den Datenträger mit den Optionen uid / gid mount (unter der Annahme von ext3) bereitstellen, sodass Sie als jeder Benutzer über Schreibberechtigungen verfügen. Oder verwenden Sie root, um einen Ordner in / media / disk zu erstellen, für den Sie Berechtigungen haben.

Weitere Informationen, die Ihnen helfen könnten:

  • Die Blockgröße ist zum größten Teil nur für die Geschwindigkeit von Bedeutung. Die Standardeinstellung ist 512 Byte, die Sie für den MBR und die Disketten behalten möchten. Größere Größen bis zu einem Punkt sollten die Vorgänge beschleunigen. Stellen Sie sich dies analog zu einem Puffer vor. Hier ist ein Link zu jemandem, der einige Geschwindigkeits-Benchmarks mit unterschiedlichen Blockgrößen durchgeführt hat. Sie sollten jedoch Ihre eigenen Tests durchführen, da die Leistung von vielen Faktoren beeinflusst wird. Schauen Sie sich auch die andere Antwort von andreas an
  • Wenn Sie dies mit ssh und netcat über das Netzwerk erreichen möchten, damit der Speicherplatz nicht so groß ist, lesen Sie diese Serverfehlerfrage .
  • Benötigen Sie wirklich ein Image der Partition, gibt es möglicherweise bessere Sicherungsstrategien?
  • dd ist ein sehr gefährlicher Befehl, verwenden Sie ofstatt ifund überschreiben Sie das, was Sie sichern wollen !! Beachten Sie, wie die Tasten ound inebeneinander liegen? Sei also sehr sehr sehr vorsichtig.
Kyle Brandt
quelle
Ich werde es versuchen. Wie mache ich es auch bs = 64k? (Und muss ich?)
Phil
Mit bs = 64k wird die Übertragung nur beschleunigt, da dd statt der Standardblockgröße von (ich erinnere mich nicht) Blöcke mit jeweils 64k liest.
Chris
Was Chris gesagt hat, und wenn Sie es einschließen möchten, setzen Sie es nach dd und vor das Pipe-Symbol (|), da es ein Argument für dd ist.
Kyle Brandt
1
Ich verwende gelegentlich auch "sudo tee $ file> / dev / null" in einer Pipeline, um das Schreiben in eine Datei zu ermöglichen, auf die mein Benutzerkonto ebenfalls keinen Zugriff hat.
Rik Schneider
6

Im ersten Fall läuft die dd als root.

Im zweiten Fall wird die dd als root ausgeführt, während die gzip als Sie ausgeführt wird.

Ändern Sie die Berechtigungen für / media / disk, geben Sie sich eine Root-Shell oder führen Sie den gzip auch als Root aus.

chris
quelle
3

Außerdem können Sie gzip durch ersetzen, bzip2 --bestum die Komprimierung zu verbessern:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
quelle
3
Das kostet viel Zeit. Weitere Informationen finden Sie unter changelog.complete.org/archives/… "Wie man über Komprimierung nachdenkt".
Bill Weiss
@BillWeiss: Danke für deinen Kommentar, sehr interessante Lektüre!
andreas
Komprimierung: lzma> bzip2> gzip .. Geschwindigkeit: gzip> bzip2> lzma. Wenn Sie das Disk-Image nicht im Internet veröffentlichen, hat dies keinen großen Einfluss auf die Zeit, die CPU-Leistung und den Speicher, den Sie für eine bessere Komprimierung ausgeben.