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 tar
von Ihnen verwendete Befehl übernimmt die eigentliche Aufgabe, Ihr /home/abc
Verzeichnis $filename
in dem /home/def
Verzeichnis 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
filename
verwendet meine Variable dieBackup_file
Variable, ersetzt jedoch alle Vorkommen von '/' durch '_' (gemäß dem Abschnitt Parametererweiterung vonman bash
und 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.