Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Linux

NAS4FREE. скрипт бэкапа. глюки кодировки при архивировании : Linux

30.03.2024 11:23


28.08.2014 14:22
baggio
 
Итак что имеем:
1.nas4free - full
Цитата:
Version 9.2.0.1 - Shigawire (revision 972)
Build date Mon Apr 28 02:43:01 CEST 2014
Platform OS FreeBSD 9.2-RELEASE-p4 (kern.osreldate: 902001)
Platform x64-full on Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz
2. имеем установленный p7zip
pkg_add -r p7zip
3. имеем вывод setenv под рутом в ssh
Цитата:
login as: root
root@192.168.0.5's password:
Last login: Thu Aug 28 13:20:48 2014 from 172.27.192.6
Welcome to NAS4Free!
nas4free: ~ # setenv
USER=root
LOGNAME=root
HOME=/root
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
TERM=xterm
UNISON=/mnt
BLOCKSIZE=K
SHELL=/bin/tcsh
SSH_CLIENT=172.27.192.6 2694 22
SSH_CONNECTION=172.27.192.6 2694 192.168.0.5 22
SSH_TTY=/dev/pts/1
HOSTTYPE=FreeBSD
VENDOR=amd
OSTYPE=FreeBSD
MACHTYPE=x86_64
SHLVL=1
PWD=/root
GROUP=wheel
HOST=nas4free.local
REMOTEHOST=172.27.192.6
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
PAGER=more
EDITOR=nano
nas4free: ~ #
3. имеем скрипт
Цитата:
7za a -mx9 -ssc /mnt/200GB/BackUp/1cNAME.7z @/mnt/200GB/BackUp/listfile.txt
4. запускаем скрипт из SSH под рутом... открываем - все кодировки и имена файлов написанные по русски в порядке...
5. создаем задание в cron
Цитата:
#!/bin/sh
setenv LANG en_US.UTF-8
setenv LANGUAGE en_US.UTF-8
setenv LC_ALL en_US.UTF-8

NAME=`/bin/date '+%Y%m%d%hh%mm'`
7za a -mx9 -ssc /mnt/200GB/BackUp/1cNAME.7z @/mnt/200GB/BackUp/listfile.txt
find /mnt/200GB/BackUp -name "*.7z" -mtime +7 -delete
выполняем... оно выполняется от root... имеем штрикозяблы...

Вопрос что я делаю не так?
Миниатюры
Нажмите на изображение для увеличения
Название: глюки Na4free.jpg
Просмотров: 797
Размер:	319.4 Кб
ID:	3946  
28.08.2014 15:10
OlegON
 
Я бы на твоем месте сначала посмотрел, что все диски в ZFS, если нет - в пень эту бздю, лучше Линукс поставь.
Советовать трудно, я не знаю фряху, но, во-первых, я бы не setenv попробовал, а export, вроде как это общебашевое.
Во-вторых, не знаю, как во фряхе, но в солярке и линуксе есть env, которая как раз переменные окружения и выводит. Можно сделать в кроне env >/home/user/file и сравнить с тем, что у тебя получается из ком.строки, когда все работает.

Но основное и самое главное - в самбе 1251 не должно отражаться на том, как файлы записываются в файловую систему. Предлагаю копать в этом направлении, иначе грабли еще только начинаются. У меня ZFS, самба, работа с виндой. Залез в свой древний конфиг, там
Цитата:
dos charset = CP866
unix charset = UTF-8
display charset = UTF-8
28.08.2014 15:33
baggio
 
Цитата:
OlegON Я бы на твоем месте сначала посмотрел, что все диски в ZFS, если нет - в пень эту бздю, лучше Линукс поставь.
да там всего понемножку... это тебя волновать не должно...
но те пути которые используются.. да на zfs... хотя именно её не интуитивные снапшоты меня и подвигли на обычный бэкап... но это тема для отдельного холивара...

Цитата:
OlegON Советовать трудно, я не знаю фряху, но, во-первых, я бы не setenv попробовал, а export, вроде как это общебашевое.
nas4free: ~ # export
export: Command not found.

Цитата:
OlegON Во-вторых, не знаю, как во фряхе, но в солярке и линуксе есть env, которая как раз переменные окружения и выводит. Можно сделать в кроне env >/home/user/file и сравнить с тем, что у тебя получается из ком.строки, когда все работает.
вывод env ssh под root
Цитата:
nas4free: ~ # env
USER=root
LOGNAME=root
HOME=/root
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
TERM=xterm
UNISON=/mnt
BLOCKSIZE=K
SHELL=/bin/tcsh
SSH_CLIENT=172.27.192.6 3419 22
SSH_CONNECTION=172.27.192.6 3419 192.168.0.5 22
SSH_TTY=/dev/pts/2
HOSTTYPE=FreeBSD
VENDOR=amd
OSTYPE=FreeBSD
MACHTYPE=x86_64
SHLVL=1
PWD=/root
GROUP=wheel
HOST=nas4free.local
REMOTEHOST=172.27.192.6
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
PAGER=more
EDITOR=nano
скрипт
Цитата:
#!/bin/sh
setenv >/mnt/200GB/BackUp/log1.txt
env >/mnt/200GB/BackUp/log2.txt

env LANG en_US.UTF-8 >/mnt/200GB/BackUp/log3.txt
env LANGUAGE en_US.UTF-8 >/mnt/200GB/BackUp/log4.txt
env LC_ALL en_US.UTF-8 >/mnt/200GB/BackUp/log5.txt
setenv LANG en_US.UTF-8 >/mnt/200GB/BackUp/log6.txt
setenv LANGUAGE en_US.UTF-8 >/mnt/200GB/BackUp/log7.txt
setenv LC_ALL en_US.UTF-8 >/mnt/200GB/BackUp/log8.txt

NAME=`/bin/date '+%Y%m%d%hh%mm'`>/mnt/200GB/BackUp/log9.txt
7za a -mx9 -ssc /mnt/200GB/BackUp/1cNAME.7z @/mnt/200GB/BackUp/listfile.txt >/mnt/200GB/BackUp/log10.txt
find /mnt/200GB/BackUp -name "*.7z" -mtime +7 -delete >/mnt/200GB/BackUp/log11.txt
вывод по всем командам во вложении
там только два файла с данными:
log2.txt
Цитата:
SERVER_PORT=80
SERVER_ADDR=192.168.0.5
HTTP_HOST=192.168.0.5
LANG=en_US
HTTP_ACCEPT_LANGUAGE=ru-RU
HTTP_CONTENT_LENGTH=264
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DOCUMENT_ROOT=/usr/local/www
HTTP_REFERER=http://192.168.0.5/system_cron_edit.php
HTTP_CONNECTION=Keep-Alive
SCRIPT_NAME=/system_cron_edit.php
REDIRECT_STATUS=200
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
PWD=/usr/local/www
HTTP_CACHE_CONTROL=no-cache
REQUEST_METHOD=POST
SERVER_SOFTWARE=lighttpd/1.4.35
SERVER_NAME=192.168.0.5
HTTP_DNT=1
SERVER_PROTOCOL=HTTP/1.1
CONTENT_LENGTH=264
HTTP_ACCEPT_ENCODING=gzip, deflate
CONTENT_TYPE=application/x-www-form-urlencoded
REQUEST_URI=/system_cron_edit.php
GATEWAY_INTERFACE=CGI/1.1
HTTP_COOKIE=PHPSESSID=9871658220604d1a789e0ed202187d1c
REMOTE_PORT=4504
REMOTE_ADDR=172.27.192.6
SCRIPT_FILENAME=/usr/local/www/system_cron_edit.php
HTTP_ACCEPT=text/html, application/xhtml+xml, */*
и
Цитата:
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=C,Utf16=off,HugeFiles=on,1 CPU)

Scanning

Updating archive /mnt/200GB/BackUp/1cNAME.7z

Compressing Заказы на местах Дашки/ЛИЦЕНЗИЯ/IMAG0391.jpg
Compressing Заказы на местах Дашки/ЛИЦЕНЗИЯ/IMAG0392.jpg
Compressing Заказы на местах Сударушка/Белая дача Дашки.doc
Compressing Заказы на местах Дашки/О запрете АЛКОГОЛЯ .doc
и. т.д.

Цитата:
OlegON Но основное и самое главное - в самбе 1251 не должно отражаться на том, как файлы записываются в файловую систему. Предлагаю копать в этом направлении, иначе грабли еще только начинаются. У меня ZFS, самба, работа с виндой. Залез в свой древний конфиг, там
не вижу проблем... насколько я понял в настройках самбы стоит unix - UTF-8... и я пытаюсь понять почему скрипт отработавших по ssh по root сохраняет имена файлов нармально а из под cron нет!
Вложения
Тип файла: zip lognas4free.zip (5.6 Кб, 178 просмотров)
28.08.2014 15:37
vdm
 
Есть подозрение что setenv там не отрабатывает.
Потому что это внутренняя команда шелла csh.
А в скрипте для крона указан /bin/sh, в котором переменные окружения export-ить нужно.
28.08.2014 15:38
baggio
 
таааак....
из консоли в SSH...

Цитата:
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,1 CPU)

Scanning

Updating archive /mnt/200GB/BackUp/1cNAME.7z

Compressing Заказы на местах Дашки/ЛИЦЕНЗИЯ/IMAG0391.jpg
Compressing Заказы на местах Дашки/ЛИЦЕНЗИЯ/IMAG0392.jpg
Compressing Заказы на местах Сударушка/Белая дача Дашки.doc
Compressing Заказы на местах Дашки/О запрете АЛКОГОЛЯ .doc
28.08.2014 15:39
baggio
 
Цитата:
vdm Есть подозрение что setenv там не отрабатывает.
Потому что это внутренняя команда шелла csh.
А в скрипте для крона указан /bin/sh, в котором переменные окружения export-ить нужно.
можно по подробнее с небольшим примером...
или может шел сменить?
28.08.2014 15:43
vdm
 
Можно сменить

Код:
#!/bin/tcsh
Можно забить на setenv

Код:
#!/bin/sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
28.08.2014 15:48
OlegON
 
погодите, предлагаю это не в скрипт лопатить, а в системе разобраться, почему русская локаль не установлена... а то где-то это еще сойдется...
Цитата:
locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME=en_US.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=en_US.UTF-8
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
28.08.2014 15:49
baggio
 
Цитата:
vdm Можно сменить

Код:
#!/bin/tcsh
Можно забить на setenv

Код:
#!/bin/sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
BINGO!!!
28.08.2014 15:52
OlegON
 
Вот это и называется костылями... Еще раз предлагаю разобраться, почему локаль не выставлена в системе...
Часовой пояс GMT +3, время: 11:23.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.