LINUX.ORG.RU

Кодировка лога rsync


0

1

На удаленной системе выполняется rsync (через ssh), его вывод рисуется в локальной консоли. Вместо русских букв - трехсимвольные мнемоники:

Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_1.html
Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_1.xml
Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_2.html
Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_2.xml
Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_3.html
Jukebox/Other_\#320\#235\#320\#276\#320\#262\#320\#270\#320\#275\#320\#272\#320\#270_3.xml

С обоих сторон

>echo $LANG
en_US.UTF-8
Что это за кодировка и как побороть?

Ответ на: комментарий от kitar

Локально

#sh --version
GNU bash, version 4.2.10(1)-release (x86_64-pc-linux-gnu)
#uname -a
Linux nas 3.0.0-15-generic #26-Ubuntu SMP Fri Jan 20 17:23:00 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Удаленно

#sh --version
GNU bash, version 3.00.16(6)-release (mipsel-unknown-linux-gnu)
#uname -a
Linux PopcornHour 2.6.22.19-27-4 #261 PREEMPT Mon May 23 13:55:04 MYT 2011 mips GNU/Linux

Запускается, в силу определенных причин, так:

sshpass -p 1234 ssh -l root ${ip} "rsync -r -h --delete-before --whole-file --size-only -v --password-file=/share/Apps/swasher/pass  nmt@192.168.0.2::jukebox /share/YAMJ/" > rsync.log

Отрабатывает все отлично, за исключением вывода в лог. Причем в локальном /var/log/rsyncd.log, то есть в системном логе, русские буквы есть.

swasher
() автор топика
Ответ на: комментарий от kitar

да ты упоролся, причём тут bash, мля? rsync как и любая другая прога пишет на терминал строки напрямую

в генте у rsync есть юз-флаг iconv, это то, что тебе нужно

anonymous
()

это обычный utf8, кстати. просто, rsync её ректально отображает в виде двухбайтных октальных последовательностей:

#include <stdio.h>
int main(void)
{
	char *a = "#320#235#320#276#320#262#320#270#320#275#320#272#320#270";
	printf("%s\nis equal to:\n", a);
	while (*a) {
		unsigned int b;
		if (sscanf(a, "#%03o", &b) != 1) { puts("sscanf"); return 0; }
		fwrite((char*)&b, sizeof(char), 1, stdout);
		a += 4;
	}
	putchar('\n');
}
$ ./1 
#320#235#320#276#320#262#320#270#320#275#320#272#320#270
is equal to:
Новинки

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.