Лінукс форум

Вхід не виконано. Ласкаво просимо зареєструватися!

Логін: Пароль: [ Реєстрація ]
Навігація: Форум

Опис та призначення цього розділу форума:
Це форум для користувачів операційної системи Linux, або тих хто хоче стати таким користувачем чи адміністратором Лінукс. Форум ні в якому разі не ставить на меті осягнути всі можливості використання цієї перспективної операційної системи, але принаймні одну відповідь на своє питання ви отримаєте завжди. Всі питання форуму проходять через руки модератора (адміністратора), а тому ймовірність отримання правильної відповіді значно збільшується.

Тема обговорення:

папка для загального доступу

Автор та дата повідомлення Текст повідомлення
Sunshine
15:12:36 19.10.2005
У нас для обміну файлами між комп'ютерами на яких стоїть Лінукс існує папка загального доступу.
Між двома комп'ютерами вона праціє чудово, але нещодавно нам добавили ще один комп, і з ним ось яка проблема: якщо з нього відкрити цю папку то назви файлів, що були написані кирилицею, відображаються "крокозяблами".
Основна проблем в тому, щоб перенести близько 100 файлів на цей комп з іншого (раніше на одному працювали два менеджери а тепер у кожного свій комп)

Може хто що порадить?
senyk
15:31:08 19.10.2005
>> цитуємо користувача Sunshine:
У нас для обміну файлами між комп'ютерами на яких стоїть Лінукс існує папка загального доступу.
...
назви файлів, що були написані кирилицею, відображаються "крокозяблами".
Як я зрозумів файлами між комп'ютерами ви обмінюватись можете, а от перенести файл названий кирилицею ні. У такому випадку Вам необхідно всі файли, що названі кирилицею додати до архіва, а вже архів скопіювати на інший комп'ютер і там розкрити.

Наприклад, вам необхідно перенести весь вміст папки /home/masha/Документи. Переходьте до каталогу /home/masha та з консолі виконуйте команду:

$ tar cvzf doki.tgz Документи

Після закінчення роботи цієї стандартної Linux-команди у Вас у каталозі /home/masha з'явиться архівний файл doki.tgz . Копіюєте його через "папку загального доступу" і на іншому комп'ютері розвертаєте командою:

$ tar xvzf doki.tgz

Якщо ви виконаєте все вірно, то повинні побачити папку з назвою "Документи"
senyk
16:28:06 19.10.2005
Правда наведений вище спосіб може не підійти, якщо на різник комп'ютерах з Лінукс різна локаль (кодова сторінка). Наприклад, cp1251 та KOI8-U.

Спершу ніж переносити файли перевірте, що показує команда:
$ echo $LANG
senyk
16:31:55 19.10.2005
Або ще краще:
Перш ніж розгортати створений архів - протестуйте його.

Для цього використайте команду (для архіву з назвою doki.tgz):
$ tar tzf doki.tgz

Якщо імена будуть "нормальними" - розгортайте.
Sunshine
11:18:37 20.10.2005

>> цитуємо користувача senyk:
Якщо імена будуть "нормальними" - розгортайте.
На превеликий жаль - не нормальні. :(
Що ж тепер?
Moriarty
11:27:41 20.10.2005
Папка общего доступа организована посредством чего? (FTP, NFS, Samba)
Я приучил всех пользователей называть файлы латинскими символами - проблем с кодировками не возникает никогда. Как приучил - всегда предупреждаю: если что-то где-то слетит, то восстановить файлы я могу только с латинскими именами, сработало.
А вот теперь пусть этот менеджер переименует эти все 100 файлов латинскими буквами - запомнит. Если нет - значит они ему не нужны (мой знакомый когда ему нужно было переименовал порядка 4000 файлов)
Sunshine
11:40:47 20.10.2005
>> цитуємо користувача Moriarty:
Папка общего доступа организована посредством чего? (FTP, NFS, Samba)
Я не знаю
Я приучил всех пользователей называть файлы латинскими символами - проблем с кодировками не возникает никогда.
Я с трудом приучила точки в имени файла не ставить, а вы говорите латиница... >:-(
А вот теперь пусть этот менеджер переименует эти все 100 файлов латинскими буквами - запомнит.
Точно! И сказать что у нее есть три дня на переименование нужных файлов, а по истечении трех дней все будет перенесено как есть, а ее профиль будет удален с того компьютера :D
Тогда точно запомнит!
ОФФ:(злая я сегодя, так и хочеться какую-нибудь пакость сделать)
senyk
13:27:41 20.10.2005
Є ще один засіб, але дуже збочений. Звичайно слід було просто додати кодову сторінку при монтуванні каталогу з локальної мережі, але можна зробити і по іншому:

1. Копіюєте всі потрібні файли в каталог Test
2. Записуєте їх до архіву: tar cvzf test.tgz Test
3. Переносите цей архів test.tgz на інший комп'ютер
4. Там розгортаєте командою: tar xvzf test.tgz
5. Створюєте perl-скрипт такого змісту:

#!/usr/bin/perl -w
use strict;
use File::Find;

my $ndir=$ARGV[0];

finddepth(\&found_file, $ndir);

sub found_file {
my $new_fn = `echo "$_" | iconv --replace=0 -f=CP1251 -t=KOI8-R`;
chomp($new_fn);
`mv -f "$_" "$new_fn"`;
}

6. Зберігаєте його у файлі, наприклад, rn_iconv.pl
7. Дозволяєте цьому файлу виконуватись: chmod 755 rn_iconv.pl
8. І нарешті запускаєте команду:

$ ./rn_iconv.pl Test
mv: cannot move `.' to a subdirectory of itself, `./.'


Якщо Вам пощастить, то у каталозі Test ви отримаєте перелік "нормально" названих файлів.

P.S. Зверніть увагу на кодові сторінки у тексті perl-скрипту, можливо Вам їх прийдеться поміняти місцями. Так данний скрипт виконує перейменування з cp1251 у koi8-r.
Sunshine
14:40:58 20.10.2005
Збоченний засіб допоміг!

Спасибі вам велике, навіть не знаю, що б я без вас робила!
Moriarty
14:43:55 20.10.2005
Только перед этим надо доставить модуль p5-Text-Iconv

Сторінки обговорення: 1-2

Ви не є користовачем цього форуму, а тому не можете створювати нові повідомлення

Реклама

Ліцензійна угода

Авторське право на серверний механізм форуму © Сеник Микола, 2005