Я использую инструмент синхронизации зеркал Debian ftpsync в системе FreeBSD 8.2. Я немного изменил скрипт только для адаптации к системе FreeBSD (например, путь bash). И я пошел по шагам от http://www.debian.org/mirror/ftpmirror для настройки зеркального сайта.
Скрипт помещается в задание cron и будет запускаться каждый день. Время от времени в файлах журнала я вижу следующее сообщение об ошибке, которое выглядит примерно так:
file has vanished: "/pool/main/g/gcc-snapshot/.gcc-snapshot_20120625-1_s390x.deb.1cqlSA" (in debian)
rsync warning: some files vanished before they could be transferred (code 24) at main.c(1518) [generator=3.0.9]
Если возникает эта ошибка, два файла, начинающиеся с 'Archive-Update-in-Progress-
' и 'Archive-Update-Required
'появится в зеркальном репозитории. Похоже, что некоторые файлы были обновлены во время синхронизации из восходящего потока. Если я снова запущу сценарий ftpsync вручную, оба файла исчезнут, и проблема будет решена.
Вы знаете, как избавиться от этой проблемы, кроме повторного запуска скрипта вручную? Спасибо.
Вы можете заключить ftpsync в сценарий оболочки следующим образом:
#!/bin/sh
ftpsync
while [ -f /pool/main/Archive-Update-In-Progress ]; do
sleep 600
ftpsync
done
Это обновит репо до тех пор, пока не будет выполнено обновление архива на другой стороне.
Насколько я знаю: нельзя! Только если вы знаете, как выглядят эти файлы, вы сможете исключить их из вызова rsync.
Кажется, что эти файлы временные и исчезают во время передачи файлов.