Wie man unter Linux Dateien trunkiert (leert)

Jun 15, 2021
admin

In manchen Situationen möchte man eine bestehende Datei auf eine Länge von Null trunkieren (leeren). Einfach ausgedrückt bedeutet das Kürzen einer Datei, dass der Inhalt der Datei entfernt wird, ohne die Datei zu löschen.

Das Kürzen einer Datei ist viel schneller und einfacher als das Löschen der Datei, das Neuerstellen der Datei und das Einstellen der richtigen Berechtigungen und des Besitzers. Wenn die Datei von einem Prozess geöffnet wird, kann das Entfernen der Datei außerdem dazu führen, dass das Programm, das die Datei verwendet, nicht mehr funktioniert.

Dieses Tutorial erklärt, wie man Dateien in Linux-Systemen mit Hilfe der Shell-Umleitung und des truncate-Befehls auf die Größe Null abschneidet.

Shell-Umleitung #

Die einfachste und am häufigsten verwendete Methode zum Abschneiden von Dateien ist die Verwendung des >-Shell-Umleitungsoperators.

Das allgemeine Format für das Abschneiden von Dateien mit Umleitung ist:

: > filename

Lassen Sie uns den Befehl aufschlüsseln:

  • Der : Doppelpunkt bedeutet true und erzeugt keine Ausgabe.
  • Der Umleitungsoperator > leitet die Ausgabe des vorhergehenden Befehls in die angegebene Datei um.
  • filename, die Datei, die abgeschnitten werden soll.

Wenn die Datei existiert, wird sie auf Null abgeschnitten. Andernfalls wird die Datei erstellt.

Anstelle von : kann auch ein anderer Befehl verwendet werden, der keine Ausgabe erzeugt.

Hier ist ein Beispiel für die Verwendung des catBefehls, um den Inhalt des Geräts /dev/null auszugeben, das nur ein Dateiendezeichen zurückgibt:

cat /dev/null > filename

Ein anderer Befehl, der verwendet werden kann, ist echo. Die Option -n weist echo an, keinen Zeilenumbruch anzuhängen:

echo -n > filename

Auf den meisten modernen Shells wie Bash oder Zsh können Sie den Befehl vor dem Umleitungssymbol weglassen und verwenden:

> filename

Um eine Datei abschneiden zu können, müssen Sie Schreibrechte für die Datei haben. Normalerweise würden Sie dafür sudo verwenden, aber die erhöhten Root-Rechte gelten nicht für die Umleitung. Hier ist ein Beispiel:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

Es gibt mehrere Lösungen, die eine Umleitung mit sudo ermöglichen. Die erste Möglichkeit besteht darin, eine neue Shell mit sudo zu starten und einen Befehl innerhalb dieser Shell mit dem -c-Flag auszuführen:

sudo sh -c '> filename'

Eine andere Möglichkeit besteht darin, die Ausgabe an den tee-Befehl zu leiten, die tee-Rechte mit sudo zu erhöhen und die leere Ausgabe in eine bestimmte Datei zu schreiben:

: | sudo tee filename

truncate Command #

truncate ist ein Kommandozeilenprogramm, mit dem Sie eine Datei auf eine bestimmte Größe verkleinern oder vergrößern können.

Die allgemeine Syntax für das Abschneiden von Dateien auf die Größe Null mit dem Befehl truncate lautet wie folgt:

truncate -s 0 filename

Die Option -s 0 setzt die Dateigröße auf Null.

Um beispielsweise das Nginx-Zugriffsprotokoll zu leeren, verwenden Sie:

sudo truncate -s 0 /var/log/nginx/access.log

Alle Protokolldateien leeren #

Mit der Zeit kann Ihr Laufwerk mit vielen großen Protokolldateien überladen werden, die viel Speicherplatz belegen.

Der folgende Befehl leert Dateien, die mit „.log“ endenden Dateien unter dem Verzeichnis /var/log leeren:

sudo truncate -s 0 /var/log/**/*.log 

Eine bessere Option wäre es, die Protokolldateien mit dem logrotateTool zu rotieren, zu komprimieren und zu entfernen.

Schlussfolgerung #

Um eine Datei unter Linux zu kürzen, verwenden Sie den Umleitungsoperator > gefolgt vom Dateinamen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.