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

So erstellen Sie Tar für Dateien, die älter als 7 Tage sind, mithilfe von Linux-Shell-Skripten

Ersetzen Sie Ihren find Befehl mit diesem und versuchen Sie es erneut,

find /var/log -type f -mtime +7 

Das wird funktionieren:

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime +7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Beachten Sie die Verwendung von "${files[@]}" im Gegensatz zu ${files[*]} . "${files[@]}" wird erweitert, um tar bereitzustellen mit einem Argument pro Dateiname und funktioniert auch dann, wenn die Dateinamen Leerzeichen, Tabulatoren oder Zeilenumbrüche enthalten. Im Gegensatz dazu expandiert die Shell ${files[*]} , führt es eine Wortaufteilung durch, wodurch möglicherweise Ihre Dateinamen verstümmelt werden.

Für eine detaillierte Erklärung der Schleife, die zum Erstellen von files verwendet wird array, siehe:How can I store find command result as arrays in Bash

Alle Dateien und Verzeichnisse, die durch den Befehl find /var/log/ -mtime +7 erzeugt werden wird in tar aufgenommen Datei. Um nur Dateien einzuschließen, keine Verzeichnisse, lesen Sie die Antwort von Skynet.

Zum Archivieren von Protokollen der letzten sieben Tage

Es muss nur ein Zeichen geändert werden:

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime -7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Das funktioniert, weil find interpretiert numerische Argumente wie folgt:

Numerische Argumente können als angegeben werden
+n für größer als n,
-n für weniger als n,
n für genau n.

Also -mtime +7 bedeutet älter als 7 Tage, während -mtime -7 bedeutet weniger als 7. Beachten Sie, dass find ignoriert Bruchteile. Also +7 umfasst 8 Tage alt, aber nicht 7,5 Tage alt. Siehe man find für Details.


Linux
  1. Wie lösche ich alle Dateien, die älter als X Tage in Linux sind?

  2. So finden Sie heraus, welche Shell Sie unter Linux verwenden

  3. Wie finde ich Dateien, die in den letzten 30 Tagen in Linux geändert wurden?

  4. So entfernen Sie Dateien, die älter als N Tage sind, mit tmpreaper in Linux

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

So finden Sie Dateien unter Linux

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

So finden Sie unter Linux Dateien, die größer oder kleiner als X sind

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

So löschen Sie Dateien, die älter als die angegebenen Tage in Linux sind

Berechnen Sie den gesamten belegten Speicherplatz nach Dateien, die älter als 180 Tage sind, mit find