Neočekávaný problém s diaktritikou při kopírování na externí disky

Dříve jsem bez problémů jel na Scientific Linuxu, nyní mám CentOS 8. Při zálohování starých dat nelze na externí USB disky (HDD, flash), které jsou formátované v NTFS nebo FAT 32, kopírovat archivní soubory s některými diakritickými znaky v názvu (většinou jde o soubory stažené z internetu, které pojmenoval jejich tvůrce). Zkusil jsem vytvořit a na tyto disky přímo uložit soubor téměř s jakoukoli diakritikou a šlo to, tj. problém nastává jen při kopírování. Prosím věděli byste důvod a řešení, abych soubory nemusel přejmenovávat? Díky.

Mlhave si vzpominam, ze pro tyto souborove systemy lze nejake pri pripojovani specifikovat kodovani, coz bude kamen urazu - proste na jednom je mas v kodovani treba utf8 na druhem v cp1250 a to je vzdy koleda o problemy. Takze hledej nejake options pro mount ntfs a fat32. Pokud to mountujes v nejakem klikatku tak tam nevim.

Dík za reakci, covex :grinning:. Takže:
# mount -o nls=utf8 /dev/sdc1 /run/media/barracuda_1GB
Kopírování funguje s diakritikou bez problémů. Totéž při pouhém
# mount /dev/sdc1 /run/media/barracuda_1GB
Ale jakmile usb disk nechám připojit automaticky, nastane problém. Kde teda je pes zakopán?

Ty automaticke serepeticky moc nepouzivam. Bude asi zalezet i na prostredi ze ktereho to pripojujes. Pokud to je gnome tak bych zkusil gconf-editor a tam neco jako dystem/storage/defaul_options… kazdopadne se po automatickem pripojeni podivej do vypisu prikazu “mount” jak je ten disk pripojeny, predpokladam to bude pres gvfs tak este muzes hledat timto smerem (nejake konfiguracni volby pro gvfs).

Jo a jeste se muzes zkusit pripojit pres udisks resp. udiskctl - fakt nevim co se kde ted pouziva, resp. jak to je provazane.

Při kopírování je myšleno přes Files / Nautilus, nebo se to děje i s cp? Jaký je mount output pro ten konkrétní disk, nemáš náhodou v /etc/fstab nějakou zapomenutou položku? Můžeš dát příklad nějakého problematického názvu? GVfs používá k mountování UDisks2 a jeho defaulní hodnoty, ty jdou sice změnit přes /etc/udisks2/mount_options.conf, ale nemělo by to být potřeba. V RHEL 8 se to zdá funguje bez problému, takže by to mělo fungovat i v CentOS…

Kopíruji ve Files nebo MC.
Výpisy mount -l:
Automatické připojení - disk NTFS:
/dev/sdc1 on /run/media/norrsken/barracuda_1TB type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2) [barracuda_1TB]
Připojení z CLI:
/dev/sdc1 on /run/media/barracuda_1GB type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) [barracuda_1TB]
Upřesnění problémových znaků:
Při automatickém připojení nejsou problémy se základní švédskou ani českou diakritikou: řčžů.txt, åäö.txt, dále nevadí např. #, pomlčka. Naopak nelze použít: | (rovná čárka), dvojtečka, otazník.
Při mountu z CLI lze použít cokoli (ovšem kromě /).
Vypadá to tedy na problém v udisks2. Ale v adresáři /etc/udisks2 je pouze soubor udisks2.conf:
[udisks2]
# Comma separated list of modules to load.
# Use asterisk to load all the modules.
modules=*
# Valid options are ‘ondemand’ or ‘onstartup’.
modules_load_preference=ondemand
[defaults]
# Valid options are ‘luks1’ or ‘luks2’
encryption=luks2

Aha, ale tyto zmíněné znaky jsou ve Windows rezervované. Viz např. https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions. Pod Linuxem lze toto omezení obejít, ale při následném připojení ve Windows to může vést k problémům. Proto udisks2 používá windows_names volbu (leč v mount výstupu není z nějakého důvodu vidět). Tedy toto chování mi přijde naprosto v pořádku pro NTFS/FAT. Viz https://github.com/storaged-project/udisks/issues/620.

1 Like

Díky :grinning:. Roky jsem na ten ext. NTFS disk zálohoval bez problémů v Scientific Linuxu 6, takže jsem po způsobu připojení nepátral. Udisks2 bude zřejmě novější a fakt nezbude než ty blbé soubory přejmenovat (je jich dost :stuck_out_tongue_closed_eyes:). Nebo to mountovat ručně (ovšem s následným možným problémem se soubory ve Win). Neboť NTFS mám právě jako jednu zálohu pro eventuelní nutnost jít na Win.

Zkus utilitu detox.