Website-Suche

wipefs Linux-Befehlstutorial mit Beispielen


Das Linux-Befehlsprogramm wipefs kann verwendet werden, um verschiedene Arten von Signaturen von einem Gerät zu löschen (Partitionstabellen, Dateisystemsignaturen usw.). Es ist im Repository aller am häufigsten verwendeten Linux-Distributionen verfügbar und wird normalerweise standardmäßig als Teil des util-linux-Pakets installiert, das auch andere wichtige Dienstprogramme für die Systemwartung enthält, so dass wir es nie explizit installieren müssen. In diesem Tutorial werden wir sehen, wie Sie wipefs verwenden, um Informationen über die vorhandenen Signaturen zu sammeln und wie Sie sie löschen können.

In diesem Tutorial lernen Sie:

  • So erhalten Sie eine Liste der vorhandenen Signaturen, ohne sie zu löschen
  • So löschen Sie alle Signaturen oder nur einige von ihnen anhand ihres Offsets oder Typs
  • Erstellen und Wiederherstellen einer Sicherungskopie der gelöschten Signaturen
  • So simulieren Sie einen Löschvorgang

Verwendete Softwareanforderungen und Konventionen

Auf der Suche nach Unterschriften

Wipefs können nicht nur verwendet werden, um vorhandene Signaturen auf einem Gerät zu löschen, sondern auch, um einen Bericht zu erstellen, der sie enthält, ohne Änderungen vorzunehmen. Um dies zu tun, müssen wir lediglich das Dienstprogramm starten, ohne eine Option anzugeben, sondern nur das Gerät, das wir analysieren möchten, als Argument übergeben. Nehmen wir ein Beispiel. Um die Liste aller Signaturen zu erhalten, die auf dem /dev/sda-Gerät vorhanden sind, würden wir Folgendes ausführen:

sudo wipefs /dev/sda

Der obige Befehl generiert eine Ausgabe ähnlich der folgenden:

DEVICE OFFSET TYPE UUID LABEL
sda    0x1fe  dos

Die Ausgabe ist in Spalten organisiert, die standardmäßig Informationen zu folgenden Themen enthalten:

  • Der DEVICE-Name des Blocks
  • Der OFFSET der Signatur
  • Der TYP der Signatur
  • Die UUID
  • Das ETIKETT

In diesem Fall zeigt das Dienstprogramm die Signatur der DOS-Partitionstabelle an, die sich auf dem Gerät befindet. Wie Sie sehen können, wird der Offset der Signatur in hexadezimaler Form (Basis 16) ausgedrückt. Der 0x1fe Wert entspricht 510 Bytes. Die Ausgabe des Programms kann jedoch so geändert werden, dass sie nur die Informationen enthält, die wir benötigen. Um die Liste der unterstützten Spalten zu überprüfen, müssen wir lediglich wipefs mit der Option --help aufrufen:

wipefs --help

Am Ende der "Hilfe"-Nachricht finden wir, was wir suchen:

Available output columns:
     UUID  partition/filesystem UUID
    LABEL  filesystem LABEL
   LENGTH  magic string length
     TYPE  superblok type
   OFFSET  magic string offset
    USAGE  type description
   DEVICE  block device name

Die Spalte USAGE kann sehr nützlich sein, da sie uns explizit darüber informiert, worauf sich die Signatur bezieht. Um auszuwählen, welche Informationen in die Ausgabe von wipefs aufgenommen werden sollen, rufen wir das Dienstprogramm mit der Option -O (--output) auf und geben die durch Kommas getrennte Liste der Spalten an, die wir einbeziehen möchten. Um beispielsweise nur die Spalten DEVICE, OFFSET und USAGE einzuschließen, würden wir schreiben:

sudo wipefs --output DEVICE,OFFSET,USAGE /dev/sda

Hier ist die Ausgabe des obigen Befehls:

DEVICE OFFSET USAGE
sda    0x1fe  partition-table

Wir können auch das Format der Ausgabe ändern. Wenn wir die Ausgabe im JSON-Format erhalten möchten, um sie beispielsweise später einfach parsen zu können, vielleicht mit unserer bevorzugten Programmiersprache, sollten wir die Option -J (kurz für --json) verwenden. Hier ist, was wir erhalten würden:

sudo wipefs -J --output DEVICE,OFFSET,USAGE /dev/sda
{
   "signatures": [
      {"device":"sda", "offset":"0x1fe", "usage":"partition-table"}
   ]
}

Schließlich, wie Sie vielleicht bemerkt haben, funktioniert das Dienstprogramm nicht rekursiv: Wenn es aufgerufen wird, wie wir es im obigen Beispiel getan haben, auf einem ganzen Blockgerät (z.B. /dev/sda), enthält es nicht die Signaturen, die es auf jeder Partition des Geräts selbst findet, so dass wir einen Glob verwenden können, um alle Signaturen auf einem Gerät zu finden und zu löschen:

sudo wipefs /dev/sda*

Wie Sie sehen können, enthält die Ausgabe jetzt auch die Signatur, die sich am Anfang der ersten Partition des Geräts befindet, die in diesem Fall ein LUKS-Container ist:

DEVICE OFFSET TYPE        UUID                                 LABEL
sda    0x1fe  dos
sda1   0x0    crypto_LUKS 1e286e68-b1a9-40d5-af99-58929a480679

Löschen von Signaturen

Wir haben gerade gesehen, wie wipefs, wenn es ohne spezifische Optionen aufgerufen wird, nur die gefundenen Signaturen ausgibt. Um sie tatsächlich löschen zu können, können wir auf drei Arten vorgehen. Wenn wir alle Signaturen entfernen möchten, können wir das Dienstprogramm mit der entsprechenden Option (-a oder --all) aufrufen. Um alle Signaturen auf /dev/sda zu löschen, würden wir Folgendes ausführen:

sudo wipefs -a /dev/sda*

Wenn wir eine bestimmte Signatur entfernen möchten, müssen wir stattdessen die Option -o verwenden, die die Abkürzung für --offset ist, und den Offset der Signatur als Argument übergeben. Standardmäßig wird die für den Offset verwendete Zahl als Byte interpretiert, wenn sie jedoch das Präfix 0x enthält, wird sie als Hexadezimalwert interpretiert. Es ist sogar möglich, gängige Suffixe zu verwenden, um anzugeben, wie das Argument interpretiert werden soll, z. B. KiB, MiB, GiB und so weiter. Sehen wir uns ein Beispiel an. Um nur die erste Signatur zu entfernen, die in /dev/sda gefunden wurde und den 0x1fe Offset-Wert hat, würden wir Folgendes ausführen:

sudo wipefs -o 0x1fe /dev/sda

Der Befehl sollte die folgende Ausgabe zurückgeben:

/dev/sda: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sda: calling ioctl to re-read partition table: Success

Eine dritte Methode, um bestimmte Signaturen zu löschen, besteht darin, sie nach ihrem Typ auszuwählen, der mit der Option -t (--types) angegeben werden kann. Die Option akzeptiert eine durch Kommas getrennte Liste als Argument. Um beispielsweise die gesamte Signatur vom Typ "dos " zu löschen, würden wir schreiben:

sudo wipefs -a -t dos /dev/sda

Standardmäßig funktioniert der Linux-Befehl wipefs nur auf nicht gemounteten Geräten und weigert sich, Signaturen von einem Gerät zu entfernen, das gerade verwendet wird.

Durchführung eines "Trockenlaufs"

Wenn wir überprüfen möchten, wie sich wipefs verhalten würden, aber die Signaturen nicht tatsächlich entfernen möchten, können wir eine "Simulation" (Trockenübung) durchführen, indem wir das Dienstprogramm mit der Option -n (--no-act) verwenden. Wie im Handbuch angegeben, bewirkt die Verwendung dieser Option, dass alles außer dem endgültigen Schreibvorgang erledigt wird.

Erstellen eines Backups vor dem Löschen von Signaturen

Das Erstellen von Backups ist immer eine gute Idee, insbesondere wenn gefährliche Vorgänge wie in diesem Fall durchgeführt werden. Das Dienstprogramm wipefs verfügt über eine dedizierte Option, die sicherstellt, dass eine Sicherung jeder Signatur in einer Datei erstellt wird, die mit dem folgenden Vorlagenpfad erstellt wurde:

$HOME/wipefs--.bak

Jede Signatur wird in einer eigenen Datei gespeichert. Um eine Sicherung aller Signaturen auf /dev/sda zu erstellen, würden wir zum Beispiel schreiben:

sudo wipefs --all --backup /dev/sda*

Die Dateien, die erstellt werden, sind in diesem Fall /root/wipefs-sda-0x000001fe.bak. Beachten Sie, dass die Option --backup nur aufgerufen werden kann, wenn ein tatsächliches Löschen durchgeführt wird, andernfalls benachrichtigt uns das Dienstprogramm, dass die Operation in diesem Kontext "bedeutungslos" ist. Die erstellten Backups können mit dd einfach wiederhergestellt werden. Um die Signatur in diesem Beispiel wiederherzustellen, würden wir Folgendes ausführen:

sudo dd if=/root/wipefs-sda-0x000001fe.bak of=/dev/sda seek=$((0x000001fe)) bs=1

Im obigen Befehl, wenn wir die Eingabedatei angeben, die in diesem Fall die Datei mit der Signatursicherung ist, mit of, geben wir stattdessen die output_file (/dev/sda) an und legen fest, wohin die Daten geschrieben werden sollen. Mit seek geben wir den Offset an, der verwendet werden soll: Die Daten sollen in Bytes angegeben werden, also verwenden wir zur Konvertierung des Hexadezimalwerts die arithmetische Expansion der Shell ($ (())) . Schließlich geben wir mit bs die Anzahl der Bytes an, die dd gleichzeitig lesen und schreiben soll.

Schlüsse

In diesem Tutorial haben wir gelernt, wie man das Linux-Befehlsprogramm wipefs verwendet, um Signaturen von Dateisystemen und rohen Blockgeräten zu entfernen. Wir haben gesehen, wie das Dienstprogramm verwendet werden kann, um eine Liste der auf einem bestimmten Gerät vorhandenen Signaturen zu erhalten, wie man tatsächlich alle oder nur bestimmte Signaturen anhand ihres Offsets oder
ihres Typs löscht. Wir sehen auch, wie es möglich ist, ein Backup der Signaturen zu erstellen, bevor man sie löscht, und wie man es schließlich mit dd wiederherstellen kann.

Verwandte Artikel: