S: cp options / bash script zum selektiven kopieren von dateien

  • Hallo, ich suche eine (einfache, weil effiziente) Methode zum selektiven kopieren/symlinken von Dateien


    Die Dateien liegen in folgender Struktur vor ...


    Code
    /some/path/dir/sub-dir-1/file.X
    /some/path/dir/sub-dir-1/file.Y
    /some/path/dir/sub-dir-1/file.Z
    /some/path/dir/sub-dir-2/file.X
    /some/path/dir/sub-dir-2/file.Y
    /some/path/dir/sub-dir-2/file.Z


    ... und sollen wie folgt kopiert/verlinkt werden.


    Code
    /some/other/path/dir/sub-dir-1/file.X
    /some/other/path/dir/sub-dir-1/file.Y
    /some/other/path/dir/sub-dir-2/file.X
    /some/other/path/dir/sub-dir-2/file.Y


    Im Zielverzeichnis sollen die Verzeichnisse angelegt werden, wenn diese noch nicht bestehen. Aus dem Quellverzeichnis sollen nur *.X bzw. *.Y behandelt werden.


    Ich habe es zur Zeit mit einem Bash Skript realisiert, dauert leider bei mehreren 10000 Dateien. Gibt es geeignete cp Optionen?



    -- sigma7

    Passively Cooled VDR: VDR 1.4.4, Debian Etch, Dynamic CPU Frequency, EPIA MII-12000, TT FF DVB-S 1.5, TT Budget DVB-S 1400, AVBoard 1.3, Philips SBC RU 760

  • mmmh. ich versuch's mal


    für die Verzeichnisse:


    find /some/path/dir/ -type d -exec mkdir -p /some/other/path/dir/{} \;


    und die links:


    find /some/path/dir/ -name "*[X|Y]" -exec ln -s {} /some/other/path/dir/ \;


    Irgendwie so. Ungetestet.

    Powered by Point of View ION330 und Mystique SaTiX-S2 Dual
    Geguckt wird auf einem 52PFL5605H/12 per HDMI mit Atmolight Quattro
    Audio optisch per Yamaha RX-V459 auf einem Teufel Concept P
    Non-TV content über XBMC und boblight
    Remote Harmony 525 durch Atric-IR
    Remote und Streaming mit Motorola XOOM und AndroVDR sowie Daroon Player
    Streaming auf ZBOX ID-81 und Desktop per streamdev
    All based on selfbuild OpenenELEC master


    Nebenbei noch ein par andere VDRs


  • das funktioniert leider nicht mit verschiedenen Verzeichnissen. Die Dateien liegen in verschiedenen Verzeichnissen. Und damit auch zwei /some/other/path/dir/.



    -- sigma7

    Passively Cooled VDR: VDR 1.4.4, Debian Etch, Dynamic CPU Frequency, EPIA MII-12000, TT FF DVB-S 1.5, TT Budget DVB-S 1400, AVBoard 1.3, Philips SBC RU 760

  • Hallo sigma7,


    was hälst Du von rsync?


    Code
    rsync -a --exclude="*.[^x|^y]" --link-dest=/some/path/dir/ /some/path/dir/ /some/other/path/dir/


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Zitat

    Original von sigma7
    Ich habe es zur Zeit mit einem Bash Skript realisiert, dauert leider bei mehreren 10000 Dateien. Gibt es geeignete cp Optionen?


    Für cp sind mir keine bekannt. Aber bei mehreren 10.000 Dateien dauert das so oder so etwas. Allerdings empfehlte ich für diesen Zweck entweder tar:

    Code
    tar cvf - --exclude="*.Z" |tar -C /zielpfad -xf -

    oder rsync:

    Code
    rsync -av /quellpfad/ /zielpfad --exclude="*.Z"


    Beachte jeweils die man-pages.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • knebb: rsync war der richtige Hinweis. $rsyncTo ist der vollständige Sync, $rsyncSource der rsync-daemon auf der Quelle.


    Code
    rsync --verbose --recursive --times --delete --filter "+ */"  --filter "+ *.xml" --filter "- *" --link-dest=$rsyncTo $rsyncSource /storage/core.sigma7.local/XML


    -- sigma7

    Passively Cooled VDR: VDR 1.4.4, Debian Etch, Dynamic CPU Frequency, EPIA MII-12000, TT FF DVB-S 1.5, TT Budget DVB-S 1400, AVBoard 1.3, Philips SBC RU 760

    Einmal editiert, zuletzt von sigma7 ()

  • Hallo sigma7,


    der Parameter --link-dest sollte doch aber auch auf das Quell-Verzeichnis zeigen.


    Im Zielverzeichniss wird ein Link zu diesem Verzeichniss angelegt, wenn es dort da ist. Diese Bedinung ist ja aber immer erfüllt, wenn Du Quelle und --link-dest auf das gleiche Verzeichniss legst.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!