Převod kódování jmen souborů – convmv
S drobným zpožděním jsem upgradoval jeden počítač (Via Epia) ze Sáržíka na Ečíka. Postup i možné problémy jsou hezky zdokumentované. Nenastal žádný větší zádrhel, obešel jsem se bez monitoru, jen s SSH. A vše bez rebootu. V jednu chvíli se sice sshd muselo restartovat, ale ani to neshodilo otevřená sezení. Jádro jsem zatím nechal být, kompiloval jsem ho teprve nedávno (2.6.12.3, ~2 roky :-]), mám tam nějaké patche a slouží dobře.
Došlo také na dlouho odkládaný přechod z ISO latin-2 na UTF-8. To byl zároveň jeden z hlavních důvodů upgradu – na všech ostatních počítačích už mám utf-8 a donutit je k bezvadné spolupráci byl problém, mnohdy neřešitelný. S SSH se to ještě nějak ošetřit dá, ale NFS prostě konvertovat znaky neumí…
Prvním krokem je dpkg-reconfigure locales a zvolit jazyk s UTF-8 jako default. Tím však vznikne klasický problém – existující soubory s ne-ASCII znaky v názvu se teď zobrazují špatně.
V poznámkách k vydání Etche se dočteme o nástroji pro migraci na utf-8, který ale bohužel nebyl včas dokončen a je k dispozici jen v Unstable. Je to ale jen jakési grafické udělátko z Ubuntu, které nepotřebujeme.
Starší a prověřený je nástroj convmv, který poslouží danému účelu dost dobře. Z informací o balíčku se dozvíme toto:
filename encoding conversion tool
convmv can convert a single filename, a directory tree or all files on a filesystem to a different encoding. It only converts the encoding of filenames, not files contents. A special feature of convmv is that it also takes care of symlinks: the encoding of the symlink's target will be converted if the symlink itself is being converted.
It is also possible to convert directories to UTF-8 which are already partially UTF-8 encoded.
Tak se na to podíváme:
convmv -r -f ISO-8859-2 -t UTF-8 /home
Zatím jen vyjede list toho, co se bude přejmenovávat. Pokud to vypadá dobře, spustíme příkaz znovu, tentokrát naostro s parametrem --notest.
Po chvíli chroustání je hotovo, systém je nyní kompletně UTF-8…