Я использую 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, но он должен снова синхронизировать ваши файлы.