Согласно народной примете, в новый дом первым нужно впускать интернет-кабель. И где он ляжет - там ставьте кровать. И стол. И комп. И жрачку.
В процессе создания кластера стал вопрос: чем же можно обеспечить синхронизацию файлов и папок на отдельных узлах? После недолгих поисков всевозможных готовых решений наткнулся на известную утилиту, работающую под Unix – Rsync. У многих администраторов появилась необходимость синхронизировать каталоги между Unix-Windows серверами. Так получил жизнь проект cwRsynс. Суть этого проекта в том, что утилита Rsync запускается по Windows с помощью библиотеки cygwin.
В моем случае возможность взаимодействия с Unix серверами в перспективе очень радовала. Также отзывы админов о работе Rsync под Unix были очень положительными, и я решил попробовать.
В этой статье мы рассмотрим каким образом настраивается синхронизация жесткого диска с помощью cwRsynс. Русскоязычных статей по работе с cwRsync я не нашел – все дружно копируют четыре шага по установке, и не касаются работы и настройки. Основную массу информации я черпал из http://rsync.samba.org, ведь параметры запуска для Rsync и cwRsync остаются одинаковыми.
Принцип синхронизации с помощью cwRsync состоит в следующем: на главном сервере (в нашем случае Сервер№1) запускается демон cwRsync при старте системы. В конфиге указывается к каким ресурсам будет даваться доступ. Клиент конфигурируется на втором сервере (Сервер№2). С определенной периодичностью на втором сервере запускается клиент, который соединяется с сокетом первого сервера, после чего происходит синхронизация. Взаимодействие происходит по локальным IP адресам:
Пример: Схема синхронизации cwRsync.
1. Установка cwRsync.
Для начала необходимо скачать и установить утилиту cwRsync. Установщик можно скачать отсюда.
Нужно выбрать последнюю версию. Перед установкой стоит убедиться, что совместима с конфигами старой версии.
Нам необходимо установить его на все узлы кластера. Процесс установки совсем прост: все значения можно оставить по умолчанию. cwRsync установиться в c:\Program Files\cwRsync\.
После установки можно выполнить следующие рекомендации:
У меня после установки проблем с кодировкой либо работой не наблюдалось. Также далее при конфигурировании я использовал прямые пути. Поэтому рекомендации можно не выполнять.
2. Работа с cwRsync на Сервер№1:
Для начала необходимо создать конфиг. файл. Создадим в c:\Program Files\cwRsync\bin\ папки conf и log. В папке conf создадим файл rsyncd.conf следующего содержания:
#### rsyncd.conf file ####
uid = user_id
gid = user_id
use chroot = false # Даём разрешение использовать все диски а не только C. Если мы
# установим в true, то rsync сможет обращатся только к диску С.
hosts allow = 192.168.1.6 # Разрешаем обращаться только с Сервер№2
[drive_c] # Метка диска С
path = /cygdrive/c/
comment = this is system drive
read only = true
[drive_d] #Метка диска Д
path = /cygdrive/d/
comment = this is date drive
read only = true
#transfer logging = yes
#### End of configuration file ####Примечание:
Далее создадим bat файлы для запуска демона: создадим в папке conf файл rsync_server_start.bat с таким содержимым:
"C:\Program Files\cwRsync\bin\rsync.exe" --config "C:\Program Files\cwRsync\bin\conf\rsyncd.conf" --daemon --log-file "C:\Program Files\cwRsync\bin\log\rsyncservice.log" --address 192.168.1.5
Полный перечень возможных параметров:
--daemon run as an rsync daemon
--address=ADDRESS bind to the specified address
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--config=FILE specify alternate rsyncd.conf file
--no-detach do not detach from the parent
--port=PORT listen on alternate port number
--log-file=FILE override the "log file" setting
--log-file-format=FMT override the "log format" setting
--sockopts=OPTIONS specify custom TCP options
-v, --verbose increase verbosity
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
-h, --help show this help (if used after --daemon)
Windows Firewall: Блокирование rsync демона.
Необходима нажать Unblock. Если всё работает нормально, то нужно добавить запуск bat файла в Планировщик Задач:
Планировщик задач: Запуск демона cwRsync при старте сервера.
Таким образом, сервер cwRsync будет запускаться при старте узла.
3. Работа с cwRsync на Сервер№2:
Установим cwRsync на Сервер№2. Создадим в c:\Program Files\cwRsync\bin\ папки bat и log. В папке bat создадим следующий файл с именем sync_all.bat. В этом файле создадим записи для синхронизации каждой необходимой папки. Следует включать исключения для папок с логами и статистикой. Вот общий вид строки.
"C:\Program Files\cwRsync\bin\rsync.exe" -av --delete --exclude '/logs/' user_id@192.168.1.5::drive_c/Folder1/ "/cygdrive/c/Folder1/">"C:\Program Files\cwRsync\bin\log\Folder1.log"Примечание:
Каждая запись состоит из следующих частей
-a равносильно –rlptgoD
r — рекурсивный режим
l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
p – перенос прав
t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
g — установить группу конечного файла таким же, как и у исходного
o — установить владельца конечного файла таким же, как и у исходного
v — verbose. Вывод сообщений в терминал.
--delete - удаляет файлы, которых нет в источнике.
--exclude – указываем то, что синхронизировать не нужно.
user_id – uid, описанный на сервере
@192.168.1.5 – IP адрес сервера
::drive_d /Folder_sync1/ – Метка сервера и путь
"/cygdrive/d/Folder_sync1/" - куда
>"C:\Program Files\cwRsync\bin\log\Folder_sync1.log" - весь вывод в файл
Обратите внимание на последний слеши в путях, так как они имеют значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.
Если не указать /, то на клиент в папке создастся папка с файлами. Иначе просто её содержимое.
При первом запуске синхронизации на Cервер№2, также появится сообщения от брандмауэра Windows о блокировании Rsync. Необходимо нажать Unblock.
Вот список всех допустимых параметров:
-v, --verbose increase verbosity
-q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-R, --relative use relative path names
--no-implied-dirs don't send implied dirs with --relative
-b, --backup make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
-u, --update skip files that are newer on the receiver
--inplace update destination files in-place
--append append data onto shorter files
--append-verify --append w/old data in file checksum
-d, --dirs transfer directories without recursing
-l, --links copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the tree
-k, --copy-dirlinks transform symlink to dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir
-H, --hard-links preserve hard links
-p, --perms preserve permissions
-E, --executability preserve executability
--chmod=CHMOD affect file and/or directory permissions
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-B, --block-size=SIZE force a fixed checksum block-size
-e, --rsh=COMMAND specify the remote shell to use
--rsync-path=PROGRAM specify the rsync to run on remote machine
--existing skip creating new files on receiver
--ignore-existing skip updating files that exist on receiver
--remove-source-files sender removes synchronized files (non-dir)
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during xfer, not before
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from dest dirs
--ignore-errors delete even if there are I/O errors
--force force deletion of dirs even if not empty
--max-delete=NUM don't delete more than NUM files
--max-size=SIZE don't transfer any file larger than SIZE
--min-size=SIZE don't transfer any file smaller than SIZE
--partial keep partially transferred files
--partial-dir=DIR put a partially transferred file into DIR
--delay-updates put all updated files into place at end
-m, --prune-empty-dirs prune empty directory chains from file-list
--numeric-ids don't map uid/gid values by user/group name
--timeout=SECONDS set I/O timeout in seconds
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match size and time
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare received files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
--skip-compress=LIST skip compressing files with suffix in LIST
-C, --cvs-exclude auto-ignore files in the same way CVS does
-f, --filter=RULE add a file-filtering RULE
-F same as --filter='dir-merge /.rsync-filter'
repeated: --filter='- .rsync-filter'
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *from/filter files are delimited by 0s
-s, --protect-args no space-splitting; wildcard chars only
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--blocking-io use blocking I/O for the remote shell
--stats give some file-transfer stats
-8, --8-bit-output leave high-bit chars unescaped in output
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
-P same as --partial --progress
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--password-file=FILE read daemon-access password from FILE
--list-only list the files instead of copying them
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--write-batch=FILE write a batched update to FILE
--only-write-batch=FILE like --write-batch but w/o updating dest
--read-batch=FILE read a batched update from FILE
--protocol=NUM force an older protocol version to be used
--iconv=CONVERT_SPEC request charset conversion of filenames
--checksum-seed=NUM set block/file checksum seed (advanced)
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
--version print version number
(-h) --help show this help (see below for -h comment)
Комментарии
cwRsynс
Сам планирую внедрить систему резервирования использующую cwRsynс.
пока пробую. Рассматриваю возможность использования Volume Shadow Copy на винде для резервирования эксклюзивно открытых файлов.
Re...cwRsynс
Мда.. Пожалуй Volume Shadow Copy можно рассматривать как простенькую альтернативу...Как-нибудь на днях постараюсь внимательней разобраться что там к чему...Сразу вижу что он бекапирует файлы даже когда они открыты или заблокированы...Но в случае необходимости, метнутся на сторону Unix с получившимися образами явно не получится...)))
Кстати, За время использования cwRsynс пока никаких, (тфу-тфу-тфу) проблем не заметил. Логи апача с помощью cwRsynс переносятся без проблемм. Я их для формирования статистики сливаю в одну папку для формирования статистики awStats. А это и есть те самые открытые и заблокированные файлы... Правда вот удалить их не удается…Они стираются после окончания записи процессом Apache…Но и тут я выкрутился – каждый день, новый лог. Т.е. для моих нужд в cwRsynс есть вроде бы все. Пока…)))
Баг
Установил cwRsync на W2k3 x64. Обнаружил баг: при логоне из системы, сервер перезапускается, на клиенте выскакивает error 12.
re:Баг
Ну если я правильно понял, то error code 12 на клиенте означает что копирование данных с сервера оборвано. Это выскакивает в следствии вырубания серверной части.
А вот по поводу того, почему при логоне (если я правильно понял это имеется в виду завершение сеанса пользователя?) вырубается сервер, трудно сказать. Возможно вы его не в качестве демона завершаете и поэтому сама винда гробит Rsync? Если бы по подробнее описали Вы, что вы делаете и что пишет в логи серверная часть cwRsync. Наверняка еще какие то сообщение сам Windows пишет...Что там?
re: Баг
Да, извините, ошибся - при логофе (завершении сеанса), причем логофе администратора, а не обычных пользователей. Нашел описание этой проблемы http://www.itefix.no/i2/node/11866. Насколько я понял, там посчитали, что это проблема при логофе в windows server 2003 x64. Сервер пишет что-то вроде "получен сигнал sigkill, sighup...". Попробую на 32 разрядном сервере, тогда отпишусь. Что касается "не в качестве демона завершаете" (видимо, запускаете), то вообще никак не запускаю, служба в сервисы прописывается, ставлю автозапуск и все. Не уверен, что эта опция вообще применима к cwRsync. Попробую , может поможет.
re: Баг
Проверил.
1) более точная ошибка при логофе: rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(543) [sender=3.0.7].
Т.е. такая же, как если остановить вручную сервис.
2) rsync.exe уже запускается с нужными опциями, включая --daemon (rsync.exe --config rsyncd.conf --daemon --no-detach).
3) Установил cwRsync на WS2k3 x32 SE, при логофе проблем нет, работает замечательно.
re3: Баг
Хе..ну тогда домыслы ниже отпадают )).. походу криво запускается демон под х64. Тогда могу только пожелать скорейшего выхода фикса бага...
...хотя вот странно, почему именно Rsync завершается. Я бы попробовал запустить Apache скажем под х64, и посмотреть не завершится ли процесс Apache при завершении сеанса администратора - возможно это что-то не так с самой ОС WS х64...
re4: Баг
Оптимизма по поводу фикса мало. Сначала ставил версию cwRsync 3.0.1, затем 4.0.1 - проблема сохранилась.
В службах rsync.exe запускается не напрямую, а через cygrunsrv.exe. Эта утилита позволяет устанавливать сервис с заданными параметрами, передавать параметры rsync.exe, запускать и останавливать rsync.exe. По-умолчанию передаются те опции rsync.exe, о которых я писал. Т.о. при запуске сервиса запускаются 2 процесса cygrunsrv.exe (почему 2 непонятно) и 1 процесс rsync.exe. Что интересно, при логофе сервис продолжает быть запущенным. И если снова подключиться, то будет работать. Я пробовал играться с опциями cygrunsrv.exe (особенно интересна "-n, --neverexits Service should never exit by itself" - кто знает, может поможет), но самостоятельно так и не удалось установить свой сервис - при запуске выдавал неизвестную ошибку. Дальше разбираться не стал.
Следует добавить, что проблема замечена только при логофе из консоли Windows (не по mstsc) и любого пользователя, не только администратора.
Помимо этого бага есть еще и такие:
1) скорость передачи Rsync пониженная. Если ftp выдает между серверами 40-45Мб/с, то изначально при версии 3.0.1 скорость не поднималась выше 9-10Мб/с.
Поставил 4.0.1 - скорость стала выше, до 20 Мб/с, но в среднем выдает 17-19Мб/с. При закачке с более слабого сервера при прочих равных скорость достигала 30Мб/с. Более пониженная скорость работы, видимо, особенность работы самого rsync.
Это разумеется при слабой загруженности серверов (процессор, память, диски, сеть) и rsync без опции сжатия, checksum.
2) замечено, что при длительной работе rsync-сервер начинает вешать физический диск, на котором расположен раздел С: (видимо, сам C:). При этом у меня он сам установлен на физически другой диск и данные передает тоже с другого физического диска.
У меня это наблюдается после примерно 5-6 часов передачи. После перезапуска сервера, все вроде нормально.
Вообще, совокупность стольких багов заставляет усомниться в надежности этого средства. Возможно, просто плохо портирован под Windows.
Сейчас раздумываю, чем можно заменить данное средство. Останавливает необходимость передавать большие объемы данных и дельта-алгоритм rsync'a.
re5: Баг
Вообще скорость достаточно сильно колышется. Может выдавать и 7-8Мб/с, а может доходить и до 28Мб/с. С передачей по ftp скорость более менее стабильна ~42Мб/с. Опять же, может эта проблема портирования через cygwin.
re6: Баг
Да, пожалуй, любая портированая утилита доверия не должна вызывать в принципе. но инструмента удобнее я пока не встречал..
re7: Баг
Видимо, слово "портированный" произошло от слова "портить")
-
XD
re2: Баг
"не в качестве демона завершаете" , упс, всё таки *завершаете -> запускаете.
"то вообще никак не запускаю" - а вот тут не понял. Для того, чтобы сервер Rsync начал работу, стал прослушивать порты сервера, его нужно запустить. Если при запуске rsync.exe в параметрах не указать --daemon - то появится просто окошко чёрное, типа дос приложения, которое и есть наш сервер rsync и при закрытии этого окошка сервер перестаёт работать. Когда же мы указываем --daemon - Rsync запускается как демон и виден только в списке процессов. Похоже на то, что у вас Rsync запущен не как демон, а как обычное оконное приложение, что и логично, когда логоф происходит - все окна завершаются. Ну а если запуск с --daemon - вполне может быть и х64 видна тупит...Как на 32 попробуете, пишите, очень интересно..
Совсем недавно у нас в офисе организовал бекап себе локально с пробного сервера всех наработок по ключевым проектам - а то был случай, когда упали все пробные сервера. Теперь я даже рейдмасивам не доверяю))). А cwRsync помогает хоть както заглушить параною...
Глупый вопрос
Здравствуйте, уважаемый Xetrix! У меня имеется 2 сервера, на обоих ОС Windows Server 2003. Требуется синхронизировать содержимое нужных папок с помощью cwRsync. При этом возникает проблема: для синхронизации требуется в конфигурационном файле нужны uid и gid. Что нужно указать в gid для Windows-систем, чтобы все правильно работало?
re: Неглупый вопрос :)
uid - имеется в виду "user id", а gid - "group id". У себя везде я их указываю одинаковыми. после их установки при работе сервера будут допускаться только клиенты, у которых будет в конфиге указан соответствующий "user id".
Например в конфиге сервера:
при запуске клиента:
ну гдето так...отвечу на любые вопросы..:)
Все-таки, наверное, глупый вопрос:)
Что такое gid и uid вроде знаю, так как синхронизацию между Windows и Linux настроил, однако там демон RSync'а запускался на Linux. В cwRsync же демон запускается на Windows, для которого понятие gid и uid немного не подходят...
В общем, делал так: на сервере TESTSERV1 под пользователем Administrator запускаем сервер cwRsync, в конфиге прописывалось
uid=Administrator
gid=Administrator
Тогда при запуске с клиента возникает ошибка:
C:\Documents and Settings\Administrator>"C:\Program Files\cwRsync\bin\rsync.exe"
-av -n Administrator@192.168.231.1::mod/ "/cygdrive/c/Folder1/"
@ERROR: invalid gid Administrator
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
Если же на сервере оставляем пользователя Administrator, и чуть-чуть меняем конфиг
uid=test
gid=test
то вполне ожидаемо получаем ошибку соединения:
C:\Documents and Settings\Administrator>"C:\Program Files\cwRsync\bin\rsync.exe"
-R -n -av -v "/cygdrive/c/Folder1/" testt@192.168.231.1::mod/
opening tcp connection to 192.168.231.1 port 873
rsync: failed to connect to 192.168.231.1: Connection timed out (116)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.7]
Что я сделал не так?
re2: совсем не глупый вопрос... :))
ну сразу оговорюсь: под линуксе не бум-бум...слыхал что есть возможность синхронизации Windows - Linux и всё...Сам же этого не пробовал ещё...
Может это из за того, что у тебя в testt@192.168.231.1::mod две буквы t стоит? ;)))
Я посмотрел конфиги для RSync у админов, так у них указано в uid и gid на демоне существующий пользователь и группа, а не как я - от фонаря написал... Клиент вообще без указания пользователя запускается в виде ""C:\Program Files\cwRsync\bin\rsync.exe" -av -n 192.168.231.1::mod/ ..."
Т.е. при запуске демона в uid и gid мы указываем пользователя, от чьего имени запускается демон. а клиенту побоку кто там запускается..он обращается и берёт всё что просит..Это мне так наш админ рассказал..
Хорошо бы увидеть весь твой конфиг демона. Да и я немного не понял: Демон у тебя под Linux запущен, а клиент на Windows? тогда по идее нужно uid и gid указать существующих на Linux пользователя и группу (причём у них права должны быть в папку синхронизации), а при запуске клиента попробовать либо ничего не указать либо пользователя из uid..
Решение найдено
Как оказалось, все просто: при запуске сервера cwRsync для windows-систем в качестве параметров в конфиге необходимо указать в качестве uid - имя пользователя, под которым запускается демон, в качестве gid - 0.
uid=Administrator
gid=0
Также проходит такая связка:
uid=0
gid=0
Ну и запускать синхронизацию на клиенте можно так:
"C:\Program Files\cwRsync\bin\rsync.exe" -av -n 192.168.231.1::mod/ "/cygdrive/c/Folder1/"
или вот так:
"C:\Program Files\cwRsync\bin\rsync.exe" -av -n Administrator@192.168.231.1::mod/ "/cygdrive/c/Folder1/"
хм. я рад что всё решилось.
хм. я рад что всё решилось. Единственно, интересно что под Windows абсолютно всё равно что указывать в uid и gid . Пожалуй немного добавлю в статью выдержек из Ваших комментариев, Спасибо!
И ещё
Совсем забыл - спасибо за статью с примерами и за помощь!
И Вам спасибо
И Вам большое спасибо за содержательные комментарии. ))
Ну а Ваше спасибо с подвигнут меня на написание не менее полезных статей. Учади!
пробелы
Спасибо, отличная статья! сэкономил кучу времени. небольшое замечание Пункт 3 общий вид строки. содержит пробелы после user_id и после drive_c. С ними не работает. :)
Спасибо за исправления!
Спасибо большое. И вправду ошибся.. Поправил. Ворд, зараза, понаставил пробелов в командных строках...сейчас уже без его помощи обхожусь..
rsync denied on module "drive_c" from bebe.office
Наткнулся на свою же ошибку в конфиге сервера cwRsync...
С недавнего времени у себя на работе использую cwRsync для бекапирования проектов с тестового сервера. На этом сервере у нас хранятся полные копии проектов, все правки я сначала делаю на нём, а потом переношу на публичный сервер. Хотя у тестового сервера и рейд есть и он регулярно бекапится сам, подумал, будет нелишне закачивать все наработки ежедневно себе локально.
Недавно столкнулся с тем, что заветных бекапов последнего дня не было...Файлы старые очень были. Залез на сервер в логи, а там:
И этим весь лог забит. Проверил конфиг, записи о разрешении всех моих IP адресов были в таком виде (так НЕПРАВИЛЬНО ):
Я иногда прыгаю на разные IP адреса и просмотрев логи rSync заметил что иногда синхронизация проходит, когда я сижу на 192.168.1.124.
Потом залез в документацию по rSync и поржал с своей необразованности - ПРАВИЛЬНО перечислять хоcты так:
После перезагрузки демона с сохранением нового конфига синхронизация пошла как по маслу..
Проблемы с русскими буквами
Указанная вами ссылка на патч www.okisoft.co.jp/esc/utf8-cygwin/ файл cygwin.dll недоступна, далее вы пишете что можно использовать прямые пути но далее ни где эти пути не упоминаются.
Как решить проблему с русскими именами файлов?
Поясню точнее...
"Также далее при конфигурировании я использовал прямые пути. Поэтому рекомендации можно не выполнять." - это относится к рекомендации " • Добавте $CYGWIN_INSTALL_PATH/bin/ в переменную окружения PATH" ...т.е. я без переменной PATH обошелся.
По поводу "http://www.okisoft.co.jp/esc/utf8-cygwin/ недоступна" - так и есть...Нашел ту dll, которую качал когда-то, качать тут:
http://www.itnotes.org.ua/files/download/cygwin1-dll-20-11-18.tar.bz2
Единственное - не проверял её пока, как появится минутка - проверю, отпишусь.
Но учтите - древняя версия. Ну и к тому же пока я проблем с тем cygwin, который при установке ставится, не замечал.
Проверил..
только что проверил на "rsync Updated: 28 Dec 2008". Синхронизация файлов между серверами Windows. Стандартный cygwin.dll при синхронизации названия русские не портит - нормально отрабатывает. Я заменил его на тот cygwin1.dll, что выложил для скачки - никаких изменений, всё также превосходно работает.
Ну проблемы обычно возникают при синхронизации между серверами Windows - Linux. Кто попробует - отпишитесь, работает ли?
Пара советов
также на форумах советуют в случае синхронизации Windows - Linux для решения проблемы с русскими названиями:
"В rsyncd.conf на сервере включить опцию
charset = _локальная_кодировка_
А с Windows-машины в команде использовать
опцию --iconv=CP1251,UTF-8 (в моём случае на
сервере Linux юникод-кодировка)"
Но я сам не проверял...
Скачать utf8-cygwin можно по адресу
http://www.oki-osk.jp/esc/utf8-cygwin/download.html
или
http://www.oki-osk.jp/esc/utf8-cygwin/winsup-utf8-patch-20-11-18.diff.bz2
http://www.oki-osk.jp/esc/utf8-cygwin/cygwin1-dll-20-11-18.tar.bz2
UTF8 DLL rabotaet
Hotel skazat shto nesmotria na to, shto pri logah ne vidno russkih bukv: http://d.pr/svqr
no russkije simvoly kopirujutsa uspeshno cherez SSH.
vsem udachi i spasibo za .dll
Отличие в регистрах символов
При синхронизации Windows Linux если файлы тянутся с линукса и есть отличающиеся только регистром символов, то для Винды это одинаковые файлы, сталкивался многократно при загрузке и попытке распаковки архивов сайтов с Линукс систем на локальную Винду.
Думаю у Rsync тоже будут с этим проблемы.
Не проверял
Лично не проверял, но думаю, что при сливании файлов с Linux в Windows, если в одной папке были такие файлы, то данные будут перезаписаны последним файлом в очереди.
Да, о такой ситуации стоит помнить. Спасибо!
Но и реализация синхронизации между разными осями - редкое извращение, также как и создание файлов с одинаковым названием и различием лишь в регистре. Если человек любит извращения, он обречён на косяки :)) Если говорить о скриптах - даже символы переноса строки у этих платформ разные, что чревато полной не работой проекта (комментарии с помощью // в PHP уничтожают куски кода под ними, в отличии от /* */). Так что подходить к синхронизации между разными осями я бы рекомендовал оооочень аккуратно..
Простите за глупый вопрос, но
Простите за глупый вопрос, но "drive_c/Folder1/" равнозначно "C:/Folder1", а "/cygdrive/" = "C:\Program Files\cwRsync\bin" ? или как это воспринимать?! Заранее спасибо!
нет, вы всё перепутали :)
Нет, вы всё перепутали :)
"drive_c" - в нашем случае это псевдоним на сервере для диска C:\, ну а путь "drive_c/Folder1/" является "C:\Folder1\" для Windows.
/cygdrive/ - тут сложнее...Насколько я понял, это корень диска, который сделан под windows для доступа к дискам на манер Linux. Я могу и ошибаться, но очень похоже. Куда он ссылается по умолчанию не знаю. Но к разделам диска Windows можно добраться только через cygdrive. Т.е. "/cygdrive/с/" является диском "C:/".
Тут важно понимать, что cwRsync это старый добрый Rsync под Linux, который заставили работать под Windows, поэтому пути в конфигах и командной строке задаются немного непривычно для Windows пользователей..
Отправить комментарий