2008-09-13

Rsync Windows <-> Linux

Часто возникает необходимость делать rsync с или на windows. В этой статье я описываю как запускать rsync с Windows.

1. Установить cwRsync

К сожалению нативной свободной или хотя бы бесплатной версии rsync для Windows не существует. Однако существует сборка rsync с cygwin под названием cwRsync.

Установщик можно скачать отсюда:
http://downloads.sourceforge.net/sereds/cwRsync_2.1.5_Installer.zip?modtime=1220778493&big_mirror=0

2. Добавте $CYGWIN_INSTALL_PATH/bin/ в переменную окружения PATH
Панель управления -> Система -> Дополнительно -> Переменные окружения

3. Решите проблему с не-ascii символами

Вот письмо, опысывающее эту проблему:

>I'm trying to use rsync (version 2.6.9) to back up some files. However, a few 
>of them contain Hebrew characters. While I can back them up, the filenames 
>come through scrambled (I don't have Hebrew characters anymore). I've tried 
>the -8 switch, but that didn't work. Any suggestions?
>
>Background:
>
>The files are created on Windows and saved on a samba share (v3.0.24). I can 
>copy them around in Windows just fine. Konqueror, on the machine the files 
>are physically on shows the file names properly. But when I copy them using 
>rsync, the file names get scrambled (Hebrew characters only; English 
>characters are fine).

I guess you're using cwrsync which uses the cygwin1.dll. The normal release
is not unicode aware and therefore has problems with non-ascii characters.
I also had this problem with German umlauts. There is a unicode-release
of the cygwin1.dll which you can copy over your existing cygwin1.dll.
In my case the problems went away. The characters still look strange when
looked at in Linux (different codepage, encoding...) but at least from the
samba share they're the same.

http://www.okisoft.co.jp/esc/utf8-cygwin/

Т.е. нужно с http://www.okisoft.co.jp/esc/utf8-cygwin/ скачать файл cygwin.dll и заменить им тот, что идет в комплекте с cwRsync.

Готово
Для того чтобы файлы с не-ascii смволами в имене нормально передавались, добавте --iconv=. в опции при вызове rsync.