Страница 1 из 1

rsync и файловые имена на кириллице

Добавлено: 2008-07-03 19:56:36
jonia
Здравствуйте,
В оффисе небольшая сеть на Windows-е (WinXP и Win2000pro), а в качестве сервера для документов, организовали сервер на FreeNAS. Каталог "My Documents" находится на FreeNAS-е (mnt/Documents), если записывать имена файлов кириллицей, то нет проблем при чтении, в любом варианте.
В настройках SAMBA (FreeNAS-а), Unix charset-UTF8, на win машинах и в браузерах, CP1251.
Все хорошо, однако при синхронизации "rsync"-ом, кириллские имена файлов портятся и имеют такой вид:
к примеру "Молба.doc" приобретает вид -> "Молба.doc" ...
Компютер с backup-ом тоже на windows-е и получается ошибка при синхронизации.
Если б' был еще один РС на юниксе, небыло бы проблем , но нету возможности поставить еще один компютер на backup.
Есть вариант, отказатся писать имена файлов кириллицей, но на улице 2008-ой... да знаю, многие скажут "читать надо по-больше" либо, ставь minimal FreeBSD, но FreeNAS очаровал своим малым потребностям к мегабайтам...

Даже не знаю в какую сторону копать... заходя терминалом (PuTTY) на FreeNAS-е, также не читались кириллские имена, благодаря Вашему сайту, конкретно статья northern-a, ето уже позади...

P.S. Вообщето шеф недолюбливает UNIX`ы, сказал: "Я етим не доверяю"... не понял, то ли железу, то ли операционке..., а увидит проблему... так вообще хана FreeNAS-у ...
Хотел короче... а получилось.... :(, сильно не пинайте....

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-03 20:11:18
terminus
У rsync есть ключик

Код: Выделить всё

--iconv=CONVERT_SPEC    request charset conversion of filenames

--iconv=CONVERT_SPEC
Rsync can convert filenames between character sets using this option. Using a CONVERT_SPEC of "." tells rsync to look up the default character-set via the locale setting. Alternately, you can fully specify what conversion to do by giving a local and a remote charset separated by a comma in the order --iconv=LOCAL,REMOTE, e.g. --iconv=utf8,iso88591. This order ensures that the option will stay the same whether you're pushing or pulling files. Finally, you can specify either --no-iconv or a CONVERT_SPEC of "-" to turn off any conversion. The default setting of this option is site-specific, and can also be affected via the RSYNC_ICONV environment variable. 

For a list of what charset names your local iconv library supports, you can run "iconv --list". 

If you specify the --protect-args option (-s), rsync will translate the filenames you specify on the command-line that are being sent to the remote host. See also the --files-from option. 

Note that rsync does not do any conversion of names in filter files (including include/exclude files). It is up to you to ensure that you're specifying matching rules that can match on both sides of the transfer. For instance, you can specify extra include/exclude rules if there are filename differences on the two sides that need to be accounted for. 

When you pass an --iconv option to an rsync daemon that allows it, the daemon uses the charset specified in its "charset" configuration parameter regardless of the remote charset you actually pass. Thus, you may feel free to specify just the local charset for a daemon transfer (e.g. --iconv=utf8).
Пробовали с ним поиграться?

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-03 23:44:33
jonia
Спасибо за бь1стрий ответ,
В FreeNAS-e, все делается веб мордой, кое-как нашел где пристроит ключик, однако после рестарт-а, мои коррекции как не бь1вало... гдето что-то работает и убирает то, что редактировал...
Решил пустит ручками "freenas:/# /var/run/rsync_local0.sh" и вот ответ FreeNAS-а:

Код: Выделить всё

freenas:/# /var/run/rsync_local0.sh
rsync: --iconv=utf8,cp1251: unknown option
rsync error: syntax or usage error (code 1) at main.c(1318) [client=2.6.9]
--delete-after: not found
freenas:/#
А вот сам файл rsync_local0.sh:

Код: Выделить всё

#!/bin/sh
/usr/bin/logger -p local4.notice "Start of local RSYNC from /mnt/Documents/ to Administrator@192.168.0.8::backup"
if [ -r /var/run/rsync_local-running0 ]; then
/usr/bin/logger -p local4.notice "Previous local synchronization still running... exiting"
exit
fi
/usr/bin/touch /var/run/rsync_local-running0
/usr/local/bin/rsync -a --iconv=utf8,cp1251 --log-file=/var/log/rsync_local.log --delete
--delete-after "/mnt/Documents/" "Administrator@192.168.0.8::backup"
/bin/rm -f /var/run/rsync_local-running0
/usr/bin/logger -p local4.notice "End of local RSYNC synchronization from /mnt/Documents/ to Administrator@192.168.0.8::backup"
Дамм, надо бь1ло Фряху минимальную поставить, там думаю меньше проблем... :st:

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-05 22:38:46
jonia
Здравствуйте,
Наконец разобрался, :) стена оказалась :st: полезной....

Правда пришлось поставить rsync_v.3.0.3 на freeBSD-шном рутере. Потом от туда вь1ковь1ривал бинарник + несколько библиотек, по ходу требования... Конечно ето извращение, но в FreeNAS-e нелзя (вернее не смог) поставит из портов rsync_v.3.0.3. , а компилированнь1е бинарнь1е пакеть1 для freeBSD(FreeNAS) не нашел...

Какая бь1ла постановка? значит так:

1. Файловь1 сервер на FreeNAS-e.
2. Локальная сеть на Виндоусе
3. Архив с FreeNAS-а, тоже на Виндоусе. - работает сервер "cwRsync Server"

Проблемма бь1ла только с кириллскими именами на архивирующем Виндовским компютером.
Rsync которь1й, стандартно в FreeNAS-e в версии максимум 2.6.9_2, и не поддерживает "--iconv=CONVERT_SPEC", пришлось обновлятся вь1ше описаннь1м способом.
Решение :

Код: Выделить всё

freenas:# rsync --iconv=UTF-8,CP1251 -a --log-file=/var/log/rsync_local.log --delete --delete-after "/mnt/Documents/" "Administrator@192.168.0.3::backup"
Нужную мне перекодировку --iconv=UTF-8,CP1251, поместил в файле : /etc/rc.d/rsync_local , которь1й в свою очередь генерирует rsync_local0.sh.
По неведомой причине /etc/rc.d/rsync_client не захотел работать в сторону беккапа на виндовс компютере, ну и ладно.

Пришлось еще на Архивном виндовсе, добавить в rsyncd.conf : charset = CP1251
Вроде все, :), а "cwRsync Server" понравился потому что работает как Services, можно сказать прозрачно :).

Благодарность terminus-у за очень полезную подсказку!

П.П. если нужно будет, добавлю код файлов sync_local, rsync_client и rsyncd.conf

П.П.П с удовольствием :)

/etc/rc.d/rsync_client :

Код: Выделить всё

#!/bin/sh
# Copyright (c) 2007-2008 Volker Theile (votdev@gmx.de)
# All rights reserved.

# PROVIDE: rsync_client
# REQUIRE: DAEMON
# BEFORE: cron

. /etc/rc.subr
. /etc/configxml.subr

name="rsync_client"

# Defaults
rsync_logfile=${rsync_logfile:-"/var/log/${name}.log"}

# Get number of scripts to generate.
_scriptnum=`configxml_get_count "//rsync/rsyncclient"`

if [ 0 -lt ${_scriptnum} ]; then
	echo "Generating client rsyncd cron scripts."

	_i=0
	while [ ${_scriptnum} -gt 0 ]
	do
		# Set scriptname.
		_rsyncscript=/var/run/rsync_client${_i}.sh

		# Generate the shell script that is used by cron.
		/usr/local/bin/xml sel -t -m "//rsync/rsyncclient[position()=${_scriptnum}]" \
			-o "#!/bin/sh" -n \
			-v "concat('/usr/bin/logger -p local4.notice "Start of remote RSYNC synchronization from ',remoteshare,' on ',rsyncserverip,' to ',localshare,'"')" -n \
			-o "if [ -r /var/run/rsync_client-running${_i} ]; then" -n \
			-o "/usr/bin/logger -p local4.notice "Previous client synchronization still running... exiting"" -n \
			-o "exit" -n \
			-o "fi" -n \
			-o "/usr/bin/touch /var/run/rsync_client-running${_i}" -n \
			-o "/usr/local/bin/rsync -rtz --log-file=${rsync_logfile} " \
			-i "count(opt_delete) > 0" \
				-o "--delete --delete-after " \
			-b \
			-i "contains(rsyncserverip,'.')" \
				-v "concat('"rsync://',rsyncserverip,'/',remoteshare,'" "',localshare,'"')" -n \
			-b \
			-i "contains(rsyncserverip,':')" \
				-v "concat('"rsync://\\[',rsyncserverip,'\\]/',remoteshare,'" "',localshare,'"')" -n \
			-b \
			-o "/bin/rm -f /var/run/rsync_client-running${_i}" -n \
			-v "concat('/usr/bin/logger -p local4.notice "End of remote RSYNC synchronization from ',remoteshare,' on ',rsyncserverip,' to ',localshare,'"')" \
			${configxml_file} | /usr/local/bin/xml unesc > ${_rsyncscript}

		# Add exectutive right to the script.
		/bin/chmod 0770 ${_rsyncscript}

		_i=$(( ${_i} + 1 ))
		_scriptnum=$(( ${_scriptnum} - 1 ))
	done
fi
/etc/rc.d/rsync_local :

Код: Выделить всё

#!/bin/sh
# Copyright (c) 2007-2008 Volker Theile (votdev@gmx.de)
# All rights reserved.

# PROVIDE: rsync_local
# REQUIRE: DAEMON
# BEFORE: cron

. /etc/rc.subr
. /etc/configxml.subr

name="rsync_local"

# Defaults
rsync_logfile=${rsync_logfile:-"/var/log/${name}.log"}

# Get number of scripts to generate.
_scriptnum=`configxml_get_count "//rsync/rsynclocal"`

if [ 0 -lt ${_scriptnum} ]; then
	echo "Generating local rsyncd cron scripts."

	_i=0
	while [ ${_scriptnum} -gt 0 ]
	do
		# Set scriptname.
		_rsyncscript=/var/run/rsync_local${_i}.sh

		# Generate the shell script that is used by cron.
		/usr/local/bin/xml sel -t -m "//rsync/rsynclocal[position()=${_scriptnum}]" \
			-o "#!/bin/sh" -n \
			-v "concat('/usr/bin/logger -p local4.notice "Start of local RSYNC from ',source,' to ',destination,'"')" -n \
			-o "if [ -r /var/run/rsync_local-running${_i} ]; then" -n \
			-o "/usr/bin/logger -p local4.notice "Previous local synchronization still running... exiting"" -n \
			-o "exit" -n \
			-o "fi" -n \
			-o "/usr/bin/touch /var/run/rsync_local-running${_i}" -n \
			-o "/usr/local/bin/rsync -a --iconv=UTF-8,CP1251 --log-file=${rsync_logfile} " -i "count(opt_delete) > 0" -o "--delete --delete-after " -b -v "concat('"',source,'" "',destination,'"')" -n \
			-o "/bin/rm -f /var/run/rsync_local-running${_i}" -n \
			-v "concat('/usr/bin/logger -p local4.notice "End of local RSYNC synchronization from ',source,' to ',destination,'"')" \
			${configxml_file} | /usr/local/bin/xml unesc > ${_rsyncscript}

		# Add exectutive right to the script.
		/bin/chmod 0770 ${_rsyncscript}

		_i=$(( ${_i} + 1 ))
		_scriptnum=$(( ${_scriptnum} - 1 ))
	done
fi
rsync.conf (windows - cw rsync server) :

Код: Выделить всё

use chroot = false
strict modes = false
charset = CP1251
#hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

[backup]
path = /cygdrive/f/backup
read only = false
transfer logging = yes

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-05 22:55:31
Alex Keda
сразу клади.
не пропадёт, пригодиться

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-05 23:58:13
terminus
Благодарность terminus-у за очень полезную подсказку!
Просто чем больше работаешь в *NIX системах, тем яснее, и, как бы это сказать-то, проще приходят правильные решения. Философия этих систем подразумевает логичность и законченность - *NIX системы в основной своей массе сделаны программистами для себя же. А правильный программер - ленивый программер, поэтому он все делает по-уму. Это только маздайный мелкософт делает все через кнопку старт, (чтобы больше бабок срубить - основная их мотивация). Вот и весь секрет... :smile: :drinks:

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 19:48:30
zg
terminus писал(а):Это только маздайный мелкософт делает все через кнопку старт, (чтобы больше бабок срубить - основная их мотивация). Вот и весь секрет...
ну завернул, ну силу мысли проявил! :Bravo: у майкрософт работают профессионалы, чим трудом ты пользуешься по десять раз на дню и будешь пользоваться не одно десятилетие, хочешь ты этого или нет. 8)

приспичело хаить майкрософт? напиши сначала виндовс 3.10, не говорю про 3.11 ;-) ну или хотя б нарисуй иконки лучше чем у майкрософта, можно икспёвые, на висту закроем глаза :smile:

А если чего-то не можешь настроить, то вовсе не обязательно, что это программа виновата :roll:

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 19:49:16
Alex Keda
я не пользуюсь.
и другим не рекомендую.

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 19:53:22
zg
lissyara писал(а):я не пользуюсь.
кхм, зарплату тебе через что начисляют? в терминалах оплаты кто стоит? банкоматы на какой оси деланы? все мультимедиа приложения на чём деланы, флэш банальный? печатная продукция в чём верстается? хочешь ты этого или нет...

ЗЫ про печатную продукцию, есть аппл, но у нас он пока скорее экзотика, чем инструмент верстальщика

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:02:30
Alex Keda
через БД под линухом
раньше полуось стояла - а щас где что
аналогично
юзаю гнаш
последний раз когда был в конторе верстальщиков - там стояли два мака, у которых никогда не отключали ЭЛТ мониторы. На них же, на мониторы стояли упсы - по три КВА каждый. ибо самое ценное в конторе было - даже не маки, а настройки этих мониторов. так что пофигу - под чем верстать.
=======
выводы - винда - ф топку

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:20:24
zg
lissyara писал(а):через БД под линухом
1с под линукс портировали?
lissyara писал(а):раньше полуось стояла - а щас где что
xp стоит с флешем, никсы туда щас не ставят, проблем много с дровами
lissyara писал(а):аналогично
юзаю гнаш
хм и много ты на нём флэшек создал? кто-то ведь их создаёт...
lissyara писал(а):последний раз когда был в конторе верстальщиков - там стояли два мака, у которых никогда не отключали ЭЛТ мониторы. На них же, на мониторы стояли упсы - по три КВА каждый. ибо самое ценное в конторе было - даже не маки, а настройки этих мониторов. так что пофигу - под чем верстать.
вот когда фотошоп под линукс портируют, исходники откроют, тогда да
lissyara писал(а):выводы - винда - ф топку
банально - самбу настраивал? а протокол это собственно чей? ))) ну и железо - игровая индустрия даёт о себе знать, чё-то нигде не видел дисков с играми, в требованиях, у которой стоит FreeBSD, все как один пишут XP Vista, а при установке вылазит DirectX и Aego. И видяхи делают с поддержкой директ иксы. Вот у тебя в ноуте видяха стоит с поддержкой 8й директиксы, скажи спасибо майкрософт! :smile:

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:22:34
manefesto
битва религиозных фанатиков ?
Бежим в /dev/null и там бьемся.
Каждому своё. Лехе bsd, а тебе винду.

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:25:11
Alex Keda
какой ты сложный... =)
=====
нету 1с. Оракел с самописными клиентами.
про остальное - что ставят - их дело, я не пользуюсь автоматами для оплаты, редко пользуюсь банкоматом (в котором, кстати, действительно стоит XP эмбедед. что не мешает ему раз в день зависать... иногда раз в два дня - но редко)
про флешки - это зло. их надо искоренять.
фотошоп - ф топку. Гимп - рулит.
неважно чей протокол. он уже открыт, и реализация собственная.
про директикс - мне пофигу. у меня нет директикса

Код: Выделить всё

acer# uname -a
FreeBSD acer.lissyara.int.otradno.ru 8.0-CURRENT FreeBSD 8.0-CURRENT #0: Thu Jul  3 07:58:57 MSD 2008     lissyara@acer.lissyara.int.otradno.ru:/var/tmp/obj/usr/src/sys/main-color-console  amd64
acer#       
виндовс - муст дай =))

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:29:28
terminus
zg писал(а):ну завернул, ну силу мысли проявил! :Bravo: у майкрософт работают профессионалы, чим трудом ты пользуешься по десять раз на дню и будешь пользоваться не одно десятилетие, хочешь ты этого или нет.
Конечно мне стоило бы добавить, что мое отношение к майкрософту это чисто мое ИМХО и все...
Но вот как назвать продукты содержащие внутренние ограничения и несовершенства только лишь для того чтобы вынуждать пользователей покупать следующие версии этих продуктов? Это лишь одна из моих претензий к мелкософту - очень уж много своих нервов я тратил в борьбе с их жадностью. За это и не люблю их, и эти их решения.

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:35:38
zg
lissyara писал(а):нету 1с. Оракел с самописными клиентами.
бедная бухгалтерия, могу посочувствовать :smile:
lissyara писал(а):про флешки - это зло. их надо искоренять.
бабла много на нём крутится, одна флешка стоит от 3 до 150-300 т.р. и не признавать его глупо, dhtml не рулит.
lissyara писал(а):фотошоп - ф топку. Гимп - рулит.
угу, токо дизайнерам это не говори
lissyara писал(а):неважно чей протокол. он уже открыт, и реализация собственная.
исключения подтверждают правила :-D
lissyara писал(а):acer# uname -a
я знаю, что у тебя асер и что там фря, но туда интегрирована видяха с аппаратной поддержкой DirectX :smile:
lissyara писал(а):виндовс - муст дай )
это всё-равно, что отказаться от бензина и нефтепродуктов, кто пешком ходит, тому "пофигу" :roll:

)))) всё больше не флужу

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:38:06
zg
terminus писал(а):Это лишь одна из моих претензий к мелкософту - очень уж много своих нервов я тратил в борьбе с их жадностью. За это и не люблю их, и эти их решения.
это руководство компании, обычные программеры, которые создавали кнопку пуск тут ни при чём... деньги есть деньги.

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:42:01
Alex Keda
zg писал(а):
lissyara писал(а):виндовс - муст дай )
это всё-равно, что отказаться от бензина и нефтепродуктов, кто пешком ходит, тому "пофигу" :roll:

)))) всё больше не флужу
а я бы отказался...
лошадки - они прикольные. живые.
=====
ты катался на лошади, верхом? Без седла, по полю, галопом?
Незабываемые ощущения... Особенно, если тебе 12 лет =)
машины отдыхают.
=======
а пешком... я могу спокойно пройти десяток километров за полтора часа, или чуть больше.
и не устану... ф топку твой бензин =)))

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 20:58:04
zg
lissyara писал(а):а я бы отказался...
лошадки - они прикольные. живые.
это точно )))
lissyara писал(а):ты катался на лошади, верхом? Без седла, по полю, галопом?
Незабываемые ощущения... Особенно, если тебе 12 лет =)
машины отдыхают.
не, не довелось, да и смотреть ей в галаза честно говоря стыдно.. я когда им в глаза смотрю, то вижу о чём они думают, они не любят людей, подковы, уздечки, сёдла - на кой они им?
lissyara писал(а):а пешком... я могу спокойно пройти десяток километров за полтора часа, или чуть больше.
и не устану... ф топку твой бензин =)))
ну почему у нас так мало таких людей? :unknown: а пробок так много :( а машин, которые в них стоят ещё больше (((

Re: rsync и файловые имена на кириллице

Добавлено: 2008-07-06 21:54:36
jonia
Да ну Вас ребята...
Вас тут без меня разнеслооо...

Завтра на работе обе смены соберемся, (будет анализ прошлого месяца и т.д. ) ... и будем решать быть или нет FreeNAS-у.
Как выше писал, маленький шеф (читай - прямой начальник), не очарован, что появилась машинка на FreeNAS-е, и навеняка будет всему этому сопротивлятся, но я уже УСТАЛ объяснять особено старшим коллегам, как попасть на соседний компютер, или "встань пожалуйста я посмотрю свою папку..." и т.д. ибо компютеры хотя и персонаьные, у нас на работе они общие.... и каждый имеет документы на каждом компютере... ну конечно без меня, моя дирректория уже на Freenas-e ... и дома...

Попутно появился вопросик, как отключить кнопку Power(не физически ;) ), и отключение Freenas-а было возможно только через веб морду? Заметил, что uptime, максимум 2-3 дня, значит кто-то выключает компютер на ночь...

@ manefesto, если считаете нужным, можно почистить тему или напрямую отправить в /dev/null