Shell-Skript zum Sichern des Verzeichnisses und Überprüfen der Datei, ob diese vorhanden ist

Shell-Skript zum Sichern des Verzeichnisses und Überprüfen der Datei, ob diese vorhanden ist

Bevor die resultierende Sicherungsdatei in das Verzeichnis kopiert wird, sollte das Skript zunächst prüfen, ob bereits eine Datei mit demselben Namen vorhanden ist (ich schreibe zum ersten Mal ein Skript).

#!/bin/bash

time=$(date +%m-%d-%y)
Backup_file=/home/abc
Dest=/home/def
filename=back-$time.tar.gz

tar -czf $Dest/$filename /home/abc
read $file

if [ -f $file ]; then
      echo "Error file $file already exist!"
else
      mv $file /home/def
fi

Antwort1

Der tarvon Ihnen verwendete Befehl übernimmt die eigentliche Aufgabe, Ihr /home/abcVerzeichnis $filenamein dem /home/defVerzeichnis zu sichern. Wenn Sie die Existenz dieses Dateinamens in diesem Verzeichnis überprüfen möchten, bevor Sie „die resultierende Sicherungsdatei in das Verzeichnis kopieren“, sollten Sie die Existenz der Datei wahrscheinlich testen, bevor Sie diesen Tar-Befehl ausführen. Zum Beispiel:

#!/bin/bash

time=$(date +%m-%d-%y)
Backup_file=/home/abc
Dest=/home/def
filename=back-$time.tar.gz

if [ -f $filename ]; then
  echo "Error file $filename already exist!"
else
  tar -czf $Dest/$filename /home/abc
fi

Ich möchte jedoch einige „Verbesserungen“ vorschlagen:

#!/bin/bash

today=$(date +%Y-%m-%d)
Backup_file=/home/abc
Dest=/home/def
filename=back-${Backup_file//\//_}-${today}.tar.gz

if [ -f ${filename} ]; then
  echo "Error file ${filename} already exists!"
else
  tar -czf ${Dest}/${filename} ${Backup_file}
fi
  • Ich habe das Datumsformat geändert, um zunächst das Jahr, dann den Monat und dann den Tag vierstellig anzugeben (meine Vorliebe).
  • Ich habe auch den Variablennamen geändert, wie von @Nasir angemerkt
  • Es kann nützlich sein, wenn der Dateiname der Sicherung anzeigt, welcher Bereich gesichert wird, wenn Sie mehrere Bereiche haben, die Sie am selben Tag sichern möchten. Daher filenameverwendet meine Variable die Backup_fileVariable, ersetzt jedoch alle Vorkommen von '/' durch '_' (gemäß dem Abschnitt Parametererweiterung von man bashund wie indiese Antwort zum Ersetzen aller Instanzen eines Zeichens)
  • Schließlich habe ich die Variable im Tar-Befehl verwendet Backup_file, sodass, wenn Sie die Variable ändern, sie nur an einer Stelle geändert werden muss (definitiv zu empfehlen)

Wenn Sie den Tar-Befehl wirklich ausführen und dann prüfen möchten, ob die Datei vorhanden ist, sollten Sie die Datei wahrscheinlich an einen temporären Speicherort taren, damit Sie sie später verschieben können. Wenn Sie jedoch nichts mit der Tar-Datei tun möchten, wenn bereits eine Datei mit demselben Namen vorhanden ist, haben Sie möglicherweise viel Zeit verschwendet, bevor Sie dies herausgefunden haben. Daher halte ich es für die bessere Option, dies vor dem Ausführen des Tar-Befehls zu prüfen.

verwandte Informationen