Dateiverschiebung mit Ordnerstruktur

  • Moin,


    ich hab hier ne kurze Frage bezüglich „Datei-Umsortierung“, folgendes Anliegen:


    Das „Foto-Achiv“ (2 x 12tb, RAID 1) erreicht so langsam die 12Tb Marke. In dem Archiv sind aber auch jede Menge Video.

    Die Dateien sind alle in einer Ordner Struktur:

    Jahr\Datum-Veranstaltungsname\Dateien.***


    Jetzt würde ich gerne alle „Video-Dateien“ aus dem Archiv auf das zweite RAID1 im QNAP kopieren. Aber dabei gerne die Ordnerstruktur beibehalten beim Kopieren …


    Wenn ich in der „File-Station“ bei Suchen „nur Videos anzeigen lassen, alle markiere und dann rüber kopiere nimmt er ja die Ordnerstruktur nicht mit … abgesehen davon das ich dann immer nur 500 Stück auf einmal verschieben kann …


    Gibts da nen schicken Weg? Bzw evtl nen anderes qnap Tool mit dem so etwas erledigt werden soll/kann?


    Und ansonsten … hab ich keine Angst davor mal per shell nen Script auszuführen … bin aber seit Ewigkeiten nicht mehr so richtig fit darin mit selber einen zu basteln der das könnte …


    Vielen Dank schon mal


    System QNAP TS451D2

  • Ich wüsste nicht, dass QNAP da etwas an Tools onboard hat.

    Spontan fällt mir robocopy an einem Windows Rechner ein, damit müsste sowas gehen, natürlich nur anhand der Dateiendungen.

    Bestimmt gibt es die Möglichkeit auch in Linux sodass man es über das CLI machen kann.


    Ein Sync in HBS mit entsprechendem Filter müsste das übrigens auch können... wäre mir aber irgendwie zu doof :)

    Obwohl... da kann man sogar explizit Videodateien wählen, ich weiß aber nicht ob er die Ordnerstruktur mitnimmt, wenn irgendwo keine Videos drin sind (was wahrscheinlich auch nicht erforderlich ist)

  • In der Shell geht das ganz leicht. Mit ssh einloggen und dann:


    Code
    cd <Quelle>
    find . -name "*.video" -exec cp -p --parents {} <Ziel> +

    Dabei ist <Quelle> durch das Basisverzeichnis (Basis da alle untergeordneten Verzeichnisstrukturen erhalten bleiben sollen) zu ersetzen, <Ziel> durch das Zielverzeichnis (bzw. die Basis davon), und "*.video" durch ein Muster, dass die Videodateien eindeutig identifiziert. Wenn es nicht ein eindeutiges Muster gibt, kann der Befehlt auch mehrmals mit verschiedenen Mustern aufgerufen werden.


    Die Ordnerstruktur bleibt erhalten und es werden nur passende Dateien kopiert.


    Die Dateien sind so kopiert worden und befinden sich auch noch am ursprünglichen Ort. Von dort können sie leicht gelöscht werden mit

    Code
    cd <Quelle>
    find . -name "*.video" -exec rm {} +

    Anmerkungen wie oben.


    WARNUNG:

    Mit dem letzen Befehl find ... -exec rm kann man große Katastrophen anrichten, wenn das Muster nicht stimmt oder wenn man sich im falschen Verzeichnis befindet. Daher vorher prüfen, ob alle Dateien im Ziel korrekt angekommen sind und einmal trocken

    Code
    find . -name "*.video"

    (ohne -exec rm) ausführen, um zu sehen, welche Dateien denn gelöscht würden.


    Ich würde die alten Dateien erst dann löschen, wenn ich sicher bin, dass alles funktioniert. Also eventuell ein paar Wochen später.