Page 1 of 1

Tar, cron, русские имена файлов.

Posted: 16 Jul 2013 17:35
by FreeRider
Здравствуйте! Есть скрипт резервного копирования. Из консоли и под рутом отрабатывает отлично. А вот при запуске из "дополнительно - выполнить команду" и из крона он перекодирует русские имена файлов, причём ни из убунты (стандартным архиватором), ни из форточек (7zip) русских букв не остается. При запуске из консоли (не от рута) жалуется, что
tar: Failed to set default locale
Как не давать tar'у портить имена файлов? Как сменить локаль для всех, а не только root?

скрипт:

Code: Select all

#!/bin/sh
LANG=ru_RU.UTF-8; export LANG;
MM_CHARSET=UTF-8; export MM_CHARSET;
tar -C /mnt/pool/downloads/.. -cpzf /mnt/pool/downloads.tgz /mnt/pool/downloads/*
после крона, из веб-интерфейса:

Code: Select all

tar -tf 'downloads.tgz' 
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/Ð\302\237Ñ\302\200иказ о допÑ\302\203Ñ\302\201ке к Ñ\302\215кзаменам.doc
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/акÑ\302\202 обÑ\302\201ледованиÑ\302\217 Ð\302\233Ð\302\224Ð\302\237 â\302\204\302\22625.docx

[пропущено]

tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/Ñ\302\203Ñ\302\207ебнÑ\302\213й план длÑ\302\217 3-9 Ñ\302\205 клаÑ\302\201Ñ\302\201ов 2012-2013 г..docx
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/Ñ\302\203Ñ\302\207ебнÑ\302\213й план длÑ\302\217 3-9 Ñ\302\205 клаÑ\302\201Ñ\302\201ов 2012-2013 г._0.docx
вручную (su):

Code: Select all

tar -tf 'downloads.tgz' 
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/Приказ о допуске к экзаменам.doc
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/акт обследования ЛДП №25.docx
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/заявление в 1 класс.docx

 [пропущено]

mnt/pool/downloads/учебный план для 1-2х 2012-2013 год_0.docx
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/учебный план для 3-9 х классов 2012-2013 г..docx
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.dev'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.ino'
tar: Игнорируется неизвестное ключевое слово расширенного заголовка `SCHILY.nlink'
mnt/pool/downloads/учебный план для 3-9 х классов 2012-2013 г._0.docx

Re: Tar, cron, русские имена файлов.

Posted: 16 Jul 2013 18:19
by FreeRider
Обожаю отвечать сам себе.
У меня NAS4FREE embedded. Для пользователей на диске уже созданы домашние директории. Для рута тоже (через unionfs):

Code: Select all

mount
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
procfs on /proc (procfs, local)
pool on /mnt/pool (zfs, NFS exported, local, nfsv4acls)
/dev/md1 on /var (ufs, local)
<above>:/mnt/pool/opt/usr/local on /usr/local (unionfs, local)
<above>:/mnt/pool/opt/var/db on /var/db (unionfs, local)
<above>:/mnt/pool/home/root on /root (unionfs, local)
/dev/da0a on /cf (ufs, local, noatime, read-only)
создал в домашней директории /root по инструкции http://bastian.rieck.ru/blog/posts/2008 ... d_freebsd/ такой файл:

Code: Select all

cat ~/.login_conf
me:\
    :charset=UTF-8:\
    :lang=ru_RU.UTF-8:
Помогло. Подробнее проверю после пары перезагрузок.

Re: Tar, cron, русские имена файлов.

Posted: 27 Oct 2013 13:23
by FreeRider
Я ошибался. На самом деле помогли эти строки в начале скрипта.

Code: Select all

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Скрипты БЕЗ этих строк нормально работают только в сессии SSH