Strona 1 z 1

Jak naprawić nazwy plików z FTP przeniesionych na inny serwer FTP?

: 23 maja 2011, 12:04
autor: goska_23
Przeniosłam katalogi z plikami na FTP ze starej Fedory (strona kodowa ISO-8859-2) na mój Debian Lenny (strona kodowa UTF-8).
Zrobiłam kopiowanie katalogów FTPa pod NFS między Linuksami i wrzuciłam do katalogów domowych moich użytkowników FTP na Debianie.
Strona kodowa Debiana UTF-8 musi zostać gdyż są na nim już strony www popisane w tym standardzie.

Problem jest teraz taki, że te pliki na FTP jak wyświetlam w terminalu na moim Debianie albo pod "mc" w miejscu gdzie były polskie litery w nazwach plików mają znak "?".
Mogę to edytować ręcznie pod "mc" przez klawisz "F6" - zmień nazwę lub przenieś plik, ale z tym jest za dużo roboty bo katalogi FTP zawierają multum plików z nazwami z polskimi literami.

Próbowałam w terminalu z polecenia:

Kod: Zaznacz cały

mv Biesko-Bia?a-654321.odt Bielsko-Biala-654321.odt
ale nie działa,

Kod: Zaznacz cały

nie można wykonać stat na 'Biesko-Bia?a-654321.odt': Nie ma takiego pliku ani katalogu
Chciałam z jakiegoś wzorca nazwy pliku typu *?*.* albo "cuś" tego typu z poleceniem "mv" wykonać podmianę choćby tego "?" na jakąś konkretną literę np: "a" ale ten znak "?" ma jakieś specjalne znaczenie w moich nazwach plików i nie da się tak ani hurtem ani pojedynczo naprawić wadliwych nazw plików.


Chodzi o to, że z klienta FTP np. Filezilli nie da się transferować na katalog lokalnego komputera tych plików, które zawierały polskie litery w nazwach plików na starym serwerze Linuksa a teraz na Debianie wyświetlają mi się ze znakami "?" w miejscu polskich liter.

Jak naprawić te nazwy plików pod Debianem?
Chciałbym naprawić te pliki które już są przeniesione na Debiana a nie wracać do starego serwera i ponownie kopiować katalogi z użyciem jakiegoś skryptu.

Nie wiem jak "ugryźć" ten "?" w nazwach moich plików?

Dodane1:
To jest może akurat mało istotne ale jeszcze te nazwy plików z polskimi znakami (aktualnie ze znakami "?") są w większości ze spacjami typu

Kod: Zaznacz cały

Zielona G?ra taki tam opis 123456.odt
więc wzory nazw plików musiały by być w znakach cudzysłów ""

Dodane2:
a)Myślałam też o czymś takim czy w ramach Debiana ze stroną kodową UTF-8 czy mogę na jednej istniejącej partycji gdzie są katalogi domowe użytkowników FTP (to partycja /mnt/goska1) zmienić kodowanie plików na inną stronę tj. ISO 8859-2.
Nie wiem czy tędy droga?

b)Wolałabym taką drogę: Sprawdziłam na moim Debianie, że pod "mc" mogę ustawić w "Ustawienia/Kodowanie/strona 8859-2" wtedy pod mc moje pliki z nazwami z polskimi literami są wyświetlane poprawnie tzn. są w nich właściwe polskie litery w miejscu tych znaków "?". Widać, że informacja o tym jakie są znaki w nazwach jest zachowana i chyba powinno się dać na Debianie zrobić konwersję nazw w określonym katalogu ze strony kodowej 8859-2 do mojej UTF-8.
Niestety nie wiem jak to ewentualnie zrobić.

Dodane:
Dodane i poprawione 3:
Udało mi się z grubsza (90%) rozwiązać problem. Znalazłam polecenie które konwertuje mi nazwy plików we wskazanym katalogu:

Kod: Zaznacz cały

convmv -f iso-8859-2 -t utf8 -r /mójkatalog
Z początku wydawało mi się, że konwertuje tylko nazwy plików a nie konwertuje nazw katalogów. Ale jednak konwertuje też nazwy katalogów tyle że, z tego co ustaliłam do tej pory, nie radzi sobie z literami (Ś, ś, ź, ą) w ich miejsce (tj.: Ś,ś,ź) zamiast "?" pojawia się teraz pod Debianem "??" a w Filezilli te znaki widziane są jako "puste kwadraciki", w przypadku "ą" konwertuje tę literę na jakiś inny obcy znak ( takie "s" z "odwróconym daszkiem").

Trzeba więc część nazw katalogów i plików edytować ręcznie - w sumie trochę to niewygodne - bo pod "mc" przez klawisz "F6" trzeba jeszcze raz wpisać całą poprawną nazwę na np 60 znaków lub więcej (bo takie nazwy mam) - nie wiem czy jest na to jakiś lepszy sposób?

W sumie korzyść z tej konwersji jest od razu "widoczna" bo wreszcie pod "Filezillą" wszystko się normalnie transferuje a to jest najważniejsze aczkolwiek niektóre nazwy są niepoprawnie wyświetlane.

Przed dokonaniem konwersji był problem generalny na Filezilli jeżeli plik w nazwie zawierał polskie znaki lub nazwa katalogu/podkatalogu zawierała polskie znaki (czyli objawiające się na Debianie jako "?") to każdy plik w takim podkatalogu nawet bez polskich znaków w nazwie nie dawał się transferować/kopiować z FTP na lokalny komputer a w drugą stronę było jeszcze gorzej bo się "powielały" na FTP katalogi lub pliki z inną wersją "krzaków" w miejscu polskich liter.

Opisałam szczegółowo bo może się komuś przyda.

W sumie problem jest poniekąd rozwiązany - pozostało mi ręczne edytowanie niektórych nazw ze znakami, z którymi nie poradził sobie konwerter.

Mam na koniec jeszcze jeden mały problem. Program konwertujący do UTF8 źle rozpoznał mi literę "ś" i teraz w nazwie pliku zamiast "ś" mam na Debianie w linii poleceń "?" pod mc "??" a na filezilli wyświetla mi się ten znak jako "pusty kwadracik".
Mam jeszcze problem z literą "ą", którą źle skonwertował na takie "s" z daszkiem.

Chciałam z linii poleceń terminala na Debianie poleceniem "find" wyszukać te wszystkie wystąpienia tego "s"-z daszkiem i zamienić na "ą" oraz coś podobnego dla tego znaku który pokazywany jest jako "nierozpoznany".
Chodzi mi o to, żeby wyszukać co się źle przekonwertowało i zapisać w pliku typu lista, żeby nie trzeba było prześledzić ręcznie całego drzewa katalogów przy poprawianiu na właściwe znaki w nazwach plików i podkatalogów.

Nie wiem jak z linii poleceń na Debianie wprowadzić ten "nierozpoznany znak" czyli "?" a przynajmniej te "s-z daszkiem". Co mam wstukać, żeby ten obcy znak wpisać do polecenia "find"?

: 23 maja 2011, 13:41
autor: fnmirk
Nie wiem jak się zachowują wszelkie takie konwertery nazw plików (katalogów) z jednego kodowania na drugie, do nazw plików ich nie używam.

Do takich celów wykorzystuję naturalną zdolność Linuksa do czytania innych kodowań. Domyślnie używam kodowania utf8. Jeżeli mam przeczytać dane z partycji, na której użyto nazw plików (katalogów) w kodowaniu innym niż utf8 to montuję partycję z odpowiednią opcją i nie muszę nic konwertować.
Więcej:

Kod: Zaznacz cały

man fstab
i artykułach na forum.

Jeżeli posiadasz oryginały to możesz tego sposobu spróbować.

Na marginesie całej tej sprawy, to dobrym nawykiem jest wymuszenie na użytkownikach stosowania starej i sprawdzonej reguły przy nazewnictwie plików i katalogów, stosowanie zestawu znaków ascii z rozsądnym ograniczeniem długości. W głupim nazywaniu plików celują zadowoleni użytkownicy pakietu biurowego pewnej firmy. Potrafią do nazwy pliku wstawić całą zawartość napisanego np. dokumentu Worda.

: 23 maja 2011, 21:04
autor: Bastian
Wturuję fnmirkowi. Poczytaj o parametrach montowania w /etc/fstab. Ja NIGDY, na zadnym systemie nie uzywam polskich znaków oraz spacji.