Jak naprawić nazwy plików z FTP przeniesionych na inny serwer FTP?
: 23 maja 2011, 12:04
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:
ale nie działa,
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 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:
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"?
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
Kod: Zaznacz cały
nie można wykonać stat na 'Biesko-Bia?a-654321.odt': Nie ma takiego pliku ani katalogu
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
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
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"?