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

Rsync - лучший способ решить мою проблему?

У меня есть один сервер OEL / RHEL 5.3 с «исходным» подключением к общему ресурсу NFS 16 ТБ 10 Гбит / с и «целевым» подключением к LUN 16 ТБ FC, отформатированному с помощью OCFS2.

Мне нужно убедиться, что пункт назначения соответствует источнику, и я счастлив, что они не синхронизированы даже на час или два - этот бит легко использовать с помощью rsync.

Но было бы неплохо знать, что в случае, если кто-то удалит каждый файл в источнике, который не удален rsync в следующий запланированный период, он обнаруживает, что собирается удалить, скажем,> 20% источника из места назначения и предпочитает остановиться.

Возможно ли подобное, или для этой проблемы больше подходит другой инструмент? У меня есть гибкость с ОС и файловой системой этого компьютера, но не с фактическим типом подключения к обоим хранилищам.

Спасибо.

Вы можете использовать rsync --max-delete=NUM чтобы сообщить rsync не удалять указанное количество файлов, где NUM - это некоторое число меньше примерно 20% ваших файлов, а --backup/--suffix параметры для переименования файлов в целевом объекте, а не для удаления.

В случае каких-либо ошибок NFS вы теоретически должны быть защищены (man rsync):

Если отправляющая сторона обнаруживает какие-либо ошибки ввода-вывода, удаление любых файлов в месте назначения будет автоматически отключено. Это сделано для предотвращения временных сбоев файловой системы (таких как ошибки NFS) на отправляющей стороне, вызывающих массовое удаление файлов в месте назначения.

Вы также можете ограничить урон с помощью --max-delete=NUM так что удаляется лишь определенная часть. Затем вы можете восстановить эту часть с ленты или того, что вы используете.

На самом деле, может быть проблема в том, что кто-то жестяная банка удалить все файлы в источнике? и не следует ли вам просто остановить это с помощью разрешений?

Вы можете что-нибудь вместе взломать, чтобы просто подсчитать файлы. Собственно, примерно так:

(cd /source && ls -FalR . ) | sort > /root/sourcelist.$$
(cd /dest && ls -FalR . ) | sort > /root/destlist.$$
diff -u /root/sourcelist.$$ /root/destlist.$$ | egrep '^-' | wc -l

Сообщит вам, сколько файлов вы собираетесь удалить. Ударьте что-нибудь, что знает, сколько - это слишком много, и запустите это перед синхронизацией.