Shellscript - Dateipfad zum Wiederherstellen aus der Textdatei lesen

362
William

Ich arbeite an einem Papierkorbskript, das ich aufrufen kann, um eine Datei zu löschen und eine Datei wiederherzustellen.

Das Löschen funktioniert derzeit einwandfrei und kann mit einem Platzhalter, Dateinamen (für aktuelles Verzeichnis) oder einem vollständigen Dateipfad vollständig aufgerufen werden. Dann nimmt es diese Datei und speichert sie in / root / Dustbin / ...

# del example.txt 

Dabei speichert es auch den ursprünglichen Dateipfad in einer log.txt-Datei im Dustbin.

Jetzt ist meine Frage: Wie gehe ich vor, um die Datei an ihrem ursprünglichen Ort wiederherzustellen (der in der Datei log.txt gespeichert ist)?

Mein Code zum Wiederherstellen ist derzeit:

#!/bin/sh  for path in "$@"; do find /root/Dustbin -name "$path" -exec mv {} ./ \; done  #End of script 

Im Moment wird die von Dustbin angegebene Datei an meinem aktuellen Speicherort mit wiederhergestellt

# restore example.txt 

Vielen Dank

1

1 Antwort auf die Frage

0
Bram

Ohne weitere Details in der Protokolldatei ist es schwierig, eine genaue Antwort zu geben. Hier einige Hinweise.

Wählen grepSie mit die richtige Zeile aus dem Protokoll. Stellen Sie sicher, dass der Befehl spezifisch genug ist, damit Sie genau ein Ergebnis erhalten, indem Sie die Suche verankern, indem Sie zum Beispiel den Anfang einer Zeile ( ^) verwenden oder die in Ihrem Protokoll verwendeten Trennzeichen finden.

Verwenden Sie awkoder sed, um den Pfad aus der Zeile zu lesen, die der grepBefehl zurückgegeben hat. Stellen Sie wieder sicher, dass Sie den vollständigen Pfad und nur die Elemente des Pfads erhalten, die Sie benötigen. (Achten Sie auf Leerzeichen usw.)

Achten Sie beim Festlegen des wiederherzustellenden Ziels darauf, auf Leerzeichen und andere Zeichen zu achten, die den mvBefehl möglicherweise stören könnten, indem Sie den Pfad richtig angeben. Um Probleme mit Bindestrichen im Dateinamen zu vermeiden, --können Sie Optionen hinzufügen, die Sie an den mvBefehl übergeben möchten . --gibt das Ende der Parameter für die meisten Befehle an.

Einige zusätzliche Gedanken:

  • Wenn Sie alle gelöschten Dateien im selben Verzeichnis abgelegt wird ein Fund nicht erforderlich Sie können einfach mvvon /root/Dustbinder ursprünglichen Position
  • Wenn Sie jedoch alle Dateien ablegen, ohne sie in demselben Verzeichnis umzubenennen, können Sie Dateien in Ihrem Dustbin überschreiben
  • Fügen Sie ausreichende Fehlerbehandlung in den Lösch- und Wiederherstellungsscripts hinzu
  • Verlassen Sie sich bei wichtigen Dateien nicht auf einen Mechanismus wie diesen! Wenn Sie sicherstellen müssen, dass Sie eine bestimmte Datei wiederherstellen können, müssen Sie sicherstellen, dass Sie über ein ordnungsgemäßes Backup verfügen und sichergestellt haben, dass Sie es wiederherstellen können