Portál AbcLinuxu, 26. května 2024 08:05

Trápení s nepřípustným argumentem při kopírování souborů

31.1.2008 14:17 | Přečteno: 1753× | Linux | poslední úprava: 1.2.2008 15:15

Pomocí Firefoxu (verze 2.9.92-10.1 Firefox/3.0b2) jsem si včera stáhl nějaké soubory ze Semestru, což je školní server s užitečnými podklady ke studiu. Protože mám počítač doma a na koleji, a potřebuju mít adresář s dokumenty aktuální na obou, napsal jsem si script, který využívá rsync pro zkopírování příslušných adresářů na flash disk a pak další pro jejich synchronizaci na s druhým počítačem.

Jaké však bylo mé překvapení, když jsem po spuštění scriptu na flashdisku nové soubory nenašel...

Protože správně fungující synchronizace a záloha dat je pro mě velmi důležitá, začal jsem tedy hledat, kde může být chyba. Nejprve jsem si prošel log, který je vytvářen scriptem.

Škola/3. semestr/33f101/Přednášky/zivot podniku.ppt     

Na první pohled nic zvláštního. Prozkoumal jsem tedy script, ale příkaz "rsync -av $path_Skola $path_flashka >> $log" včetně cest v proměnných se mi zdá správný, navíc až do teď funkční.

Zkusil jsem tedy v Krusaderu soubor přejmenovat (nastavení ignoruje příponu souboru a označní jen vlastní název). Při dalším průchodu scriptu se soubor na flashdisku opět neobjevil.

Všiml jsem si skutečnosti, že soubory stažené z internetu mají přístupová práva "rw-", kdežto soubory vytvořené na tomto počítači mají "rwx". Začal jsem si tedy hrát v terminálu...

A tady jsem objevil zradu. Při psaní příkazu cp ziv(TAB) vypadal výstup následovně:

nik@venice:~/Desktop> cp zivot\ podniku.ppt\ \ \ \ \ 

Mezery za příponou tedy způsobily, že příkaz ve scriptu vzal druhou mezeru jako druhý parametr, tedy místo, kam kopírovat.

Nyní jsem zkusil ten samý soubor stáhnout ze serveru pomocí Konqueroru. Stažený soubor byl zcela v pořádku, tj. bez mezer na konci názvu. Zdá se tedy, že si Firefox přidal mezery na konec názvu souboru. Vyzkoušel jsem ještě stáhnout nějaký soubor ze Světa hardware, tady se však problém neprojevil.

Vyzkouším ještě stabilní verzi Firefoxu a projdu si bugreporty. Poté pošlu bugreport nejspíše správci školního serveru.

EDIT: I stabilní verze Firefoxu pod Linuxem přidává na konec názvu souboru mezery, pod Windows je však Firefox v pořádku.

       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Limoto avatar 31.1.2008 14:21 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: Trápení s nepřípustným argumentem při kopírování souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
Máš tam dát uvozovky...
31.1.2008 15:41 R
Rozbalit Rozbalit vše Re: Trápení s nepřípustným argumentem při kopírování souborů
Presne tak - v skripte je chyba a skor, ci neskor sa musela prejavit.
Nicky726 avatar 31.1.2008 16:56 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: Trápení s nepřípustným argumentem při kopírování souborů
Zkusil jsem následující příkazy (jména souborů doplňená přes TAB):
nik@venice:~/Dokumenty/Škola/3. semestr/33f101/Přednášky> rsync 'marketingove rizeni.ppt     ' /media/CORSAIR/
rsync: rename "/media/CORSAIR/.marketingove rizeni.ppt     .ydjbPP" -> "marketingove rizeni.ppt     ": Invalid argument (22)
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]

nik@venice:~/Dokumenty/Škola/3. semestr/33f101/Přednášky> rsync "marketingove rizeni.ppt     " /media/CORSAIR/
rsync: rename "/media/CORSAIR/.marketingove rizeni.ppt     .wHtI3W" -> "marketingove rizeni.ppt     ": Invalid argument (22)
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
Původní verze scriptu:
path_Skola="/home/nik/Dokumenty/Škola"
path_flashka="/media/CORSAIR/nik/záloha/"
log="zaloha_log.txt"

rsync -av $path_Skola $path_flashka >> $log
Pokud použiji "$path_Skola" nebo '$path_Skola' (jak říká manuál rsyncu) je výsledek stále stejný (čili soubory se nezkopírují) viz zkouška s jedním souborem výše. Kopírování souboru pomocí Krusaderu v rámci stejného diskového oddílu je v pořádku, ale pokud dám zkopírovat soubor na flash disk vrací chybu: "Není možné zapisovat do /media/CORSAIR/marketingove rizeni.ppt ." Soubory bez mezer na konci kopírovat jdou. Stejný problém se vyskytuje i na jiných oddílech formátovaných jako FAT
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)
1.2.2008 00:05 Jirka P
Rozbalit Rozbalit vše Re: Trápení s nepřípustným argumentem při kopírování souborů
Je to tou fatkou. Viz man mount, options for fat
check=value
       Three different levels of pickyness can be chosen:

       r[elaxed]
              Upper and lower case are accepted and equivalent, long  name  parts  are  truncated  (e.g.   verylongname.foobar
              becomes verylong.foo), leading and embedded spaces are accepted in each name part (name and extension).

       n[ormal]
              Like "relaxed", but many special characters (*, ?, <, spaces, etc.) are rejected.  This is the default.

       s[trict]
              Like "normal", but names may not contain long parts and special characters that are sometimes used on Linux, but
              are not accepted by MS-DOS are rejected. (+, =, spaces, etc.)

Nicky726 avatar 1.2.2008 12:38 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: Trápení s nepřípustným argumentem při kopírování souborů
Jo, to dává smysl, díky.
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.