GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie konvertiere ich ein Linux-Festplatten-Image in eine Sparse-Datei?

Zunächst einmal werden Sparse-Dateien nur dann transparent behandelt, wenn Sie suchen, nicht wenn Sie Nullen schreiben.

Zur Verdeutlichung das Beispiel aus Wikipedia

dd if=/dev/zero of=sparse-file bs=1k count=0 seek=5120

tut nicht Schreiben Sie beliebige Nullen, es öffnet die Ausgabedatei, sucht (überspringt) 5 MB und schreibt dann Null Nullen (also gar nichts). Dieser Befehl (nicht aus Wikipedia)

dd if=/dev/zero of=sparse-file bs=1k count=5120

schreibt 5 MB Nullen und erstellt keine Sparse-Datei!

Folglich wird eine Datei, die bereits nicht spärlich ist, später nicht auf magische Weise spärlich.

Zweitens, um eine Datei mit vielen Nullen spärlich zu machen, müssen Sie sie cp machen

cp --sparse=always original sparsefile

oder Sie können auch die Option --sparse von tar oder rsync verwenden.


Der vielleicht einfachste Weg, eine Datei an Ort und Stelle zu sparen, wäre die Verwendung von fallocate Dienstprogramm wie folgt:

fallocate -v --dig-holes {file_name}

fallocate(1) wird vom util-linux-Paket auf Debian bereitgestellt.


Bearbeiten meiner Antwort der Vollständigkeit halber:

  1. Ballonieren Sie leeren FS-Speicherplatz mit Nullen (ACHTUNG:Dies ändert Ihr Disk-Image):

losetup --partscan --find --show disk.img

Angenommen, es gibt /dev/loop1 als Festplatte an und es gibt nur eine Partition, andernfalls müssen wir dies für jede Partition mit einhängbaren FS darin wiederholen (Swap-Partition ignorieren usw.).

mkdir -p /mnt/tmp mount /dev/loop1p1 /mnt/tmp dd if=/dev/zero of=/mnt/tmp/tempfile

Lassen Sie es mit ENOSPC bis zum Scheitern beenden.

/bin/rm -f /mnt/tmp/tempfile umount /mnt/tmp losetup -d /dev/loop1

  1. In ein Sparse-Image kopieren:

'dd' hat eine Option, um eine Datei mit Nullen in eine Sparse-Datei umzuwandeln:

dd if=disk.img of=disk-sparse.img conv=sparse


Linux
  1. So erhöhen Sie die Inode-Nummer der Festplatte in Linux

  2. So konvertieren Sie Dateien in UTF-8-Codierung unter Linux

  3. So erstellen Sie Sparse-Dateien in Linux mit dem Befehl „dd“.

  4. Wie lösche ich freien Speicherplatz in Linux?

  5. So konvertieren Sie eine TAR-Datei in eine ISO-Datei

So konvertieren Sie eine PDF-Datei in ein PNG/JPG-Bild unter Linux

So konvertieren Sie Raw-Kamerabilder in JPEG in Linux

So mounten Sie eine NTFS-Festplatte unter Linux

So komprimieren Sie eine PNG-Bilddatei unter Linux

Wie kann ich eine VHD-Datei (Virtual Hard Disk) in Ubuntu Linux mounten?

So konvertieren Sie eine .pem-Datei in eine .ppk-Datei unter Windows und Linux