Befehlszeilen-CP oder Rsync, um das Laufwerk zu durchsuchen und nur nach bestimmten Dateitypen zu suchen und sie irgendwo abzulegen?

Befehlszeilen-CP oder Rsync, um das Laufwerk zu durchsuchen und nur nach bestimmten Dateitypen zu suchen und sie irgendwo abzulegen?

Ist es möglich, nur über die Befehlszeile etwas wie den Befehl cpoder zu verwenden rsync, um eine Festplatte zu durchsuchen und nur nach Bild-/Videodateien zu suchen? Und vielleicht beim Kopieren an einen anderen Ort die Ordnernamen/Pfade am neuen Ort beizubehalten?

Ich habe ein paar alte Festplatten und möchte Sicherungskopien der darauf gespeicherten Bilder und Videos erstellen. Diese sind jedoch bestenfalls über Tausende von Ordnern verstreut und ich würde es vorziehen, wenn der Computer, wenn möglich, den Großteil der Routinearbeit für mich erledigen würde. Allerdings lerne ich immer noch die Befehlszeile und ihre beeindruckenden Fähigkeiten kennen.

Antwort1

Sie können findnach Dateien suchen, die Sie interessieren, beispielsweise:

find /mnt/hd1 -name \*.jpg

sucht nach JPG-Dateien (also nach Dateien mit der Erweiterung .jpg) im Verzeichnis /mnt/hd1. Wenn Sie diese Dateien einfach irgendwohin kopieren möchten, können Sie:

find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest

Dadurch wird cpder Befehl für jede Datei ausgeführt, die im Verzeichnis /mnt/dest gefunden werden kann.

Ich hoffe es hilft :)

Antwort2

Eine weitere Möglichkeit, wenn Sie es nicht in einem Skript automatisieren möchten, besteht darin, mit Ihrem Find-Befehl ein Bash-Skript zu erstellen. Führen Sie dann das Bash-Skript aus. Auf diese Weise können Sie auch den Ursprung der Datei feststellen.

Außerdem würde ich das Obige leicht ändern, falls Sie doppelte Dateinamen haben, falls Sie dies in Ihrer Umgebung vermuten. Sie benötigen eine Fehlerprüfung in Ihrem Skript.

Möchten Sie auch den Verzeichnispfad beibehalten?

d.h. wenn eine Datei hier ist

/quelle/a/b/c/d/e.jpg

Möchten Sie es kopieren nach

/ziel/a/b/c/d/e.jpg ?

oder

/ziel/e.jpg ?

Ein Beispiel könnte sein

find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh

Dies würde nur in ein Verzeichnis /backup kopieren

Um zu erhalten, könnten Sie

(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh

Aber dann möchten Sie zuerst alle Verzeichnisse erstellen

(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh

Der Vorteil dabei ist, dass Sie die Skripte auch in Augenschein nehmen und sicherstellen können, dass alles gut aussieht, bevor Sie die Befehle tatsächlich ausführen. Ich bin beim Ausführen des Befehls ziemlich oft gescheitert und hatte ... ähm ... unerwartete Ergebnisse :)

Darüber hinaus erhalten Sie durch das Skript auch eine Aufzeichnung Ihrer bevorstehenden Schritte.

verwandte Informationen