Назад | Перейти на главную страницу

RSYNC Cygwin для передачи больших данных

Я использую rsync от Cygwin для крупномасштабной передачи данных от устаревшего HP MSA 1000 на новый DAS, подключенный к другому серверу. У меня есть демон, работающий на удаленном сервере в режиме только для чтения, и локальная копия, записывающая файлы на диск.

Один из моих серверов - это репозиторий изображений с более чем миллионом файлов, разбросанных примерно по 300 каталогам. Каждый файл в среднем составляет всего пару сотен килобайт. Этот ящик проблематичнее, чем любой другой.

Процесс rsync будет работать какое-то время - иногда по 20 минут, иногда по часу - а затем он просто завершается и бездействует при заданном имени файла.

Я убедился, что файл не поврежден на удаленном сервере и что файл успешно создан на локальном диске. Я запустил клиент rsync в режиме -vv, который ничего не возвращает. Я проверил журналы, созданные демоном. Я посмотрел на использование сети на интерфейсе, который простаивает. Я посмотрел на настройки AV, чтобы увидеть, может ли что-нибудь там создать проблему. Я даже обновился до последней версии Cygwin.

Что мне нужно, чтобы поддерживать эту связь?

РЕДАКТИРОВАТЬ:

Клиентская система использует команду

rsync.exe server::Drives/f/Repo/ /cygdrive/T/Repo --archive -P  -vv

Сервер использует команду rsync.exe --daemon --no-detach --config "rsyncd.conf"

Содержимое rsyncd.conf:

use chroot = false
strict modes = false
hosts allow = 192.168.100.9
log file = c:/rsyncd.log
uid=0
gid=0

[Drives]
path = /cygdrive
read only = yes

РЕДАКТИРОВАТЬ:

Файловый сервер - 2003, тип диска в массиве - GPT, размер массива - около 4 ТБ.

РЕДАКТИРОВАТЬ:

Незнакомец .. Похоже, что процесс надежно выдает ошибки примерно на 175 000 файлов. Rsync работает нормально, когда я выбираю тот же каталог, с которым у него проблемы по одному.

РЕДАКТИРОВАТЬ:

rsync  version 3.0.9  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    no socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes

Аналогичный сбой произошел при переходе от того же набора файлов с Cygwin к установке Linux. Однако это произошло только на несколько часов позже обычного.

Вы не называете общий объем данных, поэтому я не могу быть уверен, но я использовал rsync раньше в репозиториях сопоставимого размера. Пока я не сталкивался с этой конкретной проблемой. Однако в подавляющем большинстве я использую устройства Linux / Unix, и только изредка запускаю Windows.

Чтобы понять, что на самом деле происходит, вы можете попробовать запустить rsync с дополнительными -v аргументы, посмотрите, сможете ли вы получить достаточно подробностей, чтобы увидеть, что он делает, когда зависает. Если это не поможет, попробуйте запустить rsync под strace или ltrace.

В качестве обходного пути вы можете попробовать --include-from=FILE чтобы указать список включаемых каталогов, а затем перечислить 300 упомянутых вами каталогов. Я не уверен, столкнется ли это с той же проблемой, что и вы, или нет.

Если это не сработает, вы можете просмотреть список каталогов и выполнить rsync по отдельности, например:

for DIR in $(cat file_of_dirs); \
do rsync.exe server::Drives/f/Repo/$DIR /cygdrive/T/Repo --archive -P -vv; \
done

(Написано для оболочки bash / bourne, поскольку вы сказали, что у вас установлен Cygwin. Можно сделать одну строку без косой черты в конце строк.)

Очевидно, это не отвечает на вопрос, почему у вас зависает rsync, но он должен снова синхронизировать ваши файлы.