[yaVDR 0.7] Kopieren von manchen Ordnern auf USB-Disk nur mit "mc" möglich

  • Ich verwende yaVDR 0.7 mit vdr-2.4.7-patch (Wegen menuselection-Patch) und mein Skript um Aufnahmen auf eine externe USB-Platte zu kopieren, da ich oft welche mitnehme...


    Beim kopieren mit dem Skript klappt es manchmal nicht und ich bekomme sowohl mit cp als auch mit rsync eine Fehlermeldung.


    Code
    1. Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7189]: /_config/bin/copy2usb.sh <START>
    2. Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7191]: /_config/bin/copy2usb.sh Kopiere /video/Home_Economics/Drei_Kugeln_Eis_$_6,39__>
    3. Mai 17 11:12:19 vdr01 yaVDR_7183_1609[7194]: /_config/bin/copy2usb.sh <END>
    4. ...
    5. Mai 17 11:12:25 vdr01 vdr[1609]: [1609] info: FEHLER beim kopieren von 'Home Economics / Drei Kugeln Eis $ 6,39 (S01E04)'


    Das Skript:


    Wenn ich die Aufnahme aber im Terminal mit mc kopiere, klappt es!


    Was kann das sein? Liegt es am Benutzer vdr? Weil mit sudo mc kann ich es ja kopieren...

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Welches Dateisystem hat der USB Stick?

  • Ohne genau in das Skript geschaut zu haben eine Vermutung, ob vielleicht das "$"-Zeichen im Titel "Drei Kugeln Eis $" von der bash interpretiert wird?

  • Das ist ne Seagate Expansion+ im exfat-Format.




    Code
    1. root@vdr01:~# mount |grep Seagate
    2. /dev/sdc1 on /media/vdr/Seagate type exfat (rw,nosuid,nodev,relatime,uid=666,gid=666,fmask=0022,dmask=0022,iocharset=utf8,namecase=0,errors=remount-ro,uhelper=udisks2)

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Das temporäre Skript, das eigentlich kopiert sieht so aus:


    Shell-Script
    1. #!/bin/bash
    2. mkdir --parents "/media/vdr/Seagate/video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)"
    3. svdrpsend MESG "Kopiere 'Home Economics / Drei Kugeln Eis $ 6,39 (S01E04)' nach [Seagate]/video/"
    4. if rsync --archive --bwlimit=25600 "/video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)/2022-05-03.20.33.23-0.rec" "/media/vdr/Seagate/video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)" ; then
    5. svdrpsend MESG "'Home Economics / Drei Kugeln Eis $ 6,39 (S01E04)' wurde nach [Seagate]/video/ kopiert"
    6. else
    7. svdrpsend MESG "FEHLER beim kopieren von 'Home Economics / Drei Kugeln Eis $ 6,39 (S01E04)'"
    8. fi
    9. touch /video/.update

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Ohne genau in das Skript geschaut zu haben eine Vermutung, ob vielleicht das "$"-Zeichen im Titel "Drei Kugeln Eis $" von der bash interpretiert wird?

    Ah, das schau ich mir mal an...

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Das temporäre Skript, das eigentlich kopiert sieht so aus:

    Wenn du da keine Shell-Expansionen mehr in den Strings machen willt, quote die mit einfachen Anführungszeichen, um potentielle Probleme zu vermeiden - $_ ist ja eine Variable in der bash.

    Code
    1. $ echo "/video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)/2022-05-03.20.33.23-0.rec"
    2. /video/Home_Economics/Drei_Kugeln_Eis_,39__(S01E04)/2022-05-03.20.33.23-0.rec
    3. $ echo '/video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)/2022-05-03.20.33.23-0.rec'
    4. /video/Home_Economics/Drei_Kugeln_Eis_$_6,39__(S01E04)/2022-05-03.20.33.23-0.rec

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Stimmt schon. Aber wenn dann ein ' im Namen ist (gar nicht so selten), dann hängt es wieder.


    Ich mache jetzt im Skript Änderungen und escape die Sonderzeichen ($ \ ! `)...

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Habe es erst mal so gelöst:

    Das erzeugte Kopierskript sieht dann so aus:

    Shell-Script
    1. #!/bin/bash
    2. mkdir --parents "/media/vdr/Seagate/video/Home_Economics/Der_Triangle-Shirtwaist-Brand_(gebraucht)_\$_11__(S01E06)"
    3. svdrpsend MESG "Kopiere 'Home Economics / Der Triangle-Shirtwaist-Brand (gebraucht) $ 11 (S01E06)' nach [Seagate]/video/"
    4. if rsync --archive --bwlimit=25600 "/video/Home_Economics/Der_Triangle-Shirtwaist-Brand_(gebraucht)_\$_11__(S01E06)/2022-05-10.20.28.23-0.rec" "/media/vdr/Seagate/video/Home_Economics/Der_Triangle-Shirtwaist-Brand_(gebraucht)_\$_11__(S01E06)" ; then
    5. svdrpsend MESG "'Home Economics / Der Triangle-Shirtwaist-Brand (gebraucht) $ 11 (S01E06)' wurde nach [Seagate]/video/ kopiert"
    6. else
    7. svdrpsend MESG "FEHLER beim kopieren von 'Home Economics / Der Triangle-Shirtwaist-Brand (gebraucht) $ 11 (S01E06)'"
    8. fi
    9. touch /video/.update

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Na ja, solche Dateinamen fallen dir als nächstes auf die Füße, wenn du die Platte auch mal unter WIN32 nutzen willst.

  • Das ist kein Problem. Windoof hab ich nirgends im Einsatz. Nur noch in der VBox, falls mal die Steuer ansteht oder so.


    Ich dachte eigentlich, dass der VDR die problematischen Zeichen codiert... Beim : zum Beispiel klapp das...

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

  • Ich dachte eigentlich, dass der VDR die problematischen Zeichen codiert... Beim : zum Beispiel klapp das...

    Das hängt davon ab, wie man --dirname setzt, vgl. Manpage

    Code
    1. --dirnames=path[,name[,enc]]
    2. Set the maximum directory path length to path (default is the maximum value allowed
    3. on the system). If name is also given, it defines the maximum directory name length
    4. (default is the maximum value allowed on the system). The optional enc can be 0 or
    5. 1, and controls whether special characters in directory names are encoded as hex
    6. values (default: 0). If path or name are left empty (as in ",,1" to only set enc),
    7. the defaults apply. The length of the video directory name and that of the actual
    8. recording directory is subtracted from path, to make sure the directory path will
    9. never become too long.

    Aber da $ (mit Einschränkungen) in Windows-Dateinamen erlaubt ist, scheint das nicht speziell behandelt zu werden: http://git.tvdr.de/?p=vdr.git;…619c752a9d21;hb=HEAD#l591 ff.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    The post was edited 1 time, last by seahawk1986 ().

  • Hab ich eigentlich

    EDIT:

    Der VDR übersetzt wohl nur diese:

    Code
    1. const char *InvalidChars = "\"\\/:*?|<>#";

    MP-Logos (Kanallogos für VDR) - Picons2VDR (Kanallogos für VDR) - MV_Backup (Backup mit RSync) - MV_BorgBackup (Backup mit Borg) - Skin FlatPlus (Fork)

    „In zwei Jahren wird das Spam-Problem gelöst sein.“ [Bill Gates], Microsoft-Chef, 2004

    The post was edited 1 time, last by MegaV0lt ().