Da ich heute für jemanden auf einer Festplatte ein gelöschtes Video wiederherstellen wollte, habe ich auch gleich parallel diese Anleitung geschrieben. Falls ich das nochmal machen muss, kann ich dann hier gucken und mir viel Arbeit ersparen :)
Gesucht war ein Film, der irgendwann in den letzten Jahren gelöscht wurde und mindestens 5 MiB groß war. Der Datenträger ist eine Festplatte, die vor Jahren gegen eine SSD getauscht wurde. Der Datenträger ist mit NTFS formatiert und es lief Windows darauf.
Ich habe dazu photorec
(Website) verwendet. Dieses überprüft entweder den als frei angegebenen Speicherplatz eines Datenträgers oder den gesamten Speicherplatz auf “gelöschte” Dateien. Also solche, die im “Inhaltsverzeichnis” des Dateisystems nicht mehr eingetragen sind, deren Daten aber weiterhin im Dateisystem verfügbar sind, da sie bisher nicht überschrieben wurden.
Alles oder nichts
In Photorec kann man meines Wissens nach nicht einstellen, welche Dateien wiederhergestellt werden sollen und welche nicht. Daher muss man leider alle Dateien wiederherstellen lassen und nur die benötigten daraus filtern und die restlichen wieder löschen.
Im vorliegenden Fall ist die Festplatte 650 GiB groß und beim Wiederherstellen wurden insgesamt über 600.000 Dateien wiederhergestellt.
balooctl disable
oder das Verzeichnis /home/user/recover/
in der Konfiguration für die Indexierung verbieten. Sonst wird die Desktopsuche jede neue Datei indexieren und ein Prozess mit dem Namen baloo_file_extractor
die ganze Zeit das System belasten.Das Setup
Generell sollte man nie irgendwelche Kommandozeilenbefehle einfach so von einer Webseite kopieren und ungeprüft in eine Shell einfügen.
Details, weshalb das gefährlich sein könnte.
Fast alles wird sich im Verzeichnis /home/user/recover/
abspielen. Die wiederhergestellten Dateien werden am Ende nach /home/user/recovered_videos/
verschoben und das erst genannte Verzeichnis wird wieder gelöscht.
mkdir /home/user/recover/
mkdir /home/user/recovered_videos/
Wiederherstellung starten
Dieses Kommando muss als root
ausgeführt werden und wird je nach Größe des Dateisystems und der Anbindung an den PC sehr lange dauern (bei mir circa 12 Stunden). Am besten führt man das in einer Tmux-Session oder in einer Screen-Session aus:
photorec /d /home/user/recover/r /dev/sdb2
Das Tool Photorec erstellt jetzt in /home/user/recover/
ganz viele durchnummerierte Verzeichnisse r.1
, r.2
, […]
, r.99
usw. und legt darin die wiederhergestellten Dateien ab.
Optional zwischendurch löschen (nur falls Speicherplatz begrenzt ist)
Wenn man genug Speicherplatz hat, kann man warten, bis Photorec fertig ist und dann die benötigten Dateien herausfiltern. Wenn nicht, kann man zwischendurch unbenötigte Dateien löschen.
Da ich nicht abschätzen konnte, was da insgesamt an Datenvolumen zusammen kommen würde, wollte ich schon zwischendurch die nicht benötigten Dateien löschen.
Hier klicken, um zwischendurch unbenötigte Dateien zu löschen.
Folgende Kommandos kann man alle x Zeit mal ausführen:
Als root
:
chown -R user: /home/user/recover/
Und direkt im Anschluss als Benutzer user
:
find /home/user/recover -type f -size -5M -execdir rm -f '{}' \;
find /home/user/recover -type f ! \( -iname *.mpg -o -iname *.mpeg -o -iname *.mp4 -o -iname *.mp2 -o -iname *.avi -o -iname *.vob -o -iname *.wmv -o -iname *.mkv -o -iname *.mov -o -iname *.flv -o -iname *.webm -o -iname *.f4v -o -iname *.ogv -o -iname *.3gp -o -iname *.3g2 -o -iname *.3gpp -o -iname *.m2p -o -iname *.ts -o -iname *.asf -o -iname *.m2t \) -execdir rm -f '{}' \;
find /home/user/recover -type d -empty -delete
Zuerst werden hier Dateien gelöscht, die kleiner sind als 5 MiB sind, da die gesuchte Datei größer ist.
Dann werden Dateien gelöscht, die keine typische Dateiendung von Videodateien haben.
Zuletzt werden leere Verzeichnisse gelöscht.
Wiederherstellung abgeschlossen – Aufräumen
Jede wiederhergestellte Datei hat einen Dateinamen bestehend aus f
, einer fortlaufenden Nummer und bei Verfügbarkeit dem ursprünglichen Dateinamen. Im Ergebnis z. B. f340518928.avi
.
So ist sichergestellt, dass alle Dateien einen eindeutigen Dateinamen haben. Jedoch kann es vorkommen, dass unter verschiedenen Dateinamen die selbe Datei wiederhergestellt wird. Das könnte daran liegen, dass z. B. eine Datei “in den Papierkorb gelöscht” wurde und dann später dort erneut gelöscht wird. Auf dem Dateisystem ist sie dann an zwei verschiedenen Orten gewesen und wird dann demnach auch zwei Mal wiederhergestellt.
Gewünschte Dateien ins Zielverzeichnis verschieben
Als root
ausführen, damit man als Benutzer user
Schreibzugriff auf die wiederhergestellten Daten hat:
chown -R user: /home/user/recover/
Jetzt werden alle gefundenen Videodateien, die mindestens 5 MiB groß sind, in ein nach /home/user/recovered_videos/
verschoben. Dazu nutzt man diese beiden Befehle:
find /home/user/recover -type f \( -iname *.mpg -o -iname *.mpeg -o -iname *.mp4 -o -iname *.mp2 -o -iname *.avi -o -iname *.vob -o -iname *.wmv -o -iname *.mkv -o -iname *.mov -o -iname *.flv -o -iname *.webm -o -iname *.f4v -o -iname *.ogv -o -iname *.3gp -o -iname *.3g2 -o -iname *.3gpp -o -iname *.m2p -o -iname *.ts -o -iname *.asf -o -iname *.m2t \) -execdir mv '{}' /home/user/recovered_videos/ \;
Das Verzeichnis /home/user/recover
kann man jetzt löschen.
Doppelte Dateien
Überflüssige, weil mehrfach vorhandene, Dateien kann man z. B. mit dem Tool czkawka
finden und löschen.
Dateinamen
In den meisten der “neueren” Videodateien sind Exif-Metadaten enthalten, in denen der Erstellungszeitpunkt vermerkt ist.
Über diesen kann man mit exiftool
die Dateien entsprechend benennen. Den Tipp dazu habe ich aus der Dokumentation von Photorec (ab Seite 49 “After using Photorec”).
Es ist auch möglich, (zusätzlich) andere Exifdaten zur Benennung der Dateien zu benutzen. Einfach mal mit exiftool dateiname.mp4
nachschauen, was alles vorhanden ist.
Mit dem folgenden Befehl werden alle mp4-Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen umbenannt in das Format 2015-08-03_17-12-34.mp4
:
exiftool -overwrite_original -r -ext mp4 '-FileName<CreateDate' -d '%Y-%m-%d_%H-%M-%S%%-c.%%e' /home/user/recovered_videos/
Erläuterungen zu diesem Kommando
- Lässt man die Option
-overwrite_original
weg, dann bleiben die Originaldateien erhalten, werden aber umbenannt indateiname.mp4_original
. -r
steht für rekursiv, es werden demnach alle Dateien in allen Unterverzeichnissen umbenannt.- Die Option
-ext mp4
sorgt dafür, dass nur Dateien mit der Dateierweiterung .mp4 umbenannt werden. Lässt man die Option weg, werden alle Dateien umbenannt. -d
gibt das Format an, in das die Dateien umbenannt werden sollen.- Das
c
im String des Formats sorgt dafür, dass einer umzubenennenden Datei ein Zähler angefügt wird, falls es eine so genannte Datei bereits geben sollte.
Es werden nur solche Dateien umbenannt, die auch wirklich Create Date
in den Exif-Daten enthalten.
Weitere Informationen gibt es in der Manpage von exiftool.
Die Ausgabe dieses Kommandos ist zum Beispiel:
1 directories scanned
24 image files updated
Ergebnis
Ich konnte die gesuchte Datei finden. :)
Aufräumen
Nutzt man Dolphin mit aktivierter Vorschau für Dateien, um die Videos durchzuschauen, dann kann man jetzt das Verzeichnis ~/.cache/thumbnails/
jetzt löschen, da hier sonst sehr viele unnütze Vorschaubilder für immer liegen bleiben würden.
Nützliches
- Find
-delete
vs-exec rm
-execdir
habe ich zufällig in der Manpage von find gesehen. Bei Verwendung von-exec
wird der Befehl in dem Verzeichnis ausgeführt, in dem Find ausgeführt wurde. Bei-execdir
wird der Befehl in dem Verzeichnis ausgeführt, in dem sich die gefundene Datei befindet. Das soll sicherer sein laut Manpage.
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt