Ошибка удаления команды rsync «Обнаружена ошибка ввода-вывода - пропуск удаления файла»

16

Я использую команду rsync для резервного копирования файлов с одного из моих серверов Ubuntu на другой компьютер с Ubuntu. Сервер резервного копирования запускает скрипт, использующий команду rysnc. Вот команда, которую я использую

rsync -rltvh --partial --stats --exclude = .beagle / --exclude =. * --delete-after root @ live_server: / home / / home / live_server_backup / home >> /tmp/logfile.log 2> & 1

Live_Server ssh-в состоянии без пароля. Так что это работает. Теперь проблема с

опция -delete-after

После того, как все файлы синхронизированы. В конце я вижу, что процедура удаления skipped.logfile ошибка

Обнаружена ошибка ввода-вывода - пропущено удаление файла

При попытке найти журнал произошла ошибка при синхронизации файла

rsync: не удалось открыть send_files "/home/xyz/Desktop/PPT_session_1_context.pdf": разрешение отклонено (13)

Таким образом, я понимаю, что rsync не может прочитать все файлы из цели по соображениям безопасности, поскольку он пропускает удаление файла.

Есть ли способ сделать --delete-after work, даже если есть какая-то ошибка разрешения? Я не хочу использовать принудительное удаление, поскольку в некоторых ситуациях это будет опасно.

XemX
источник
1
Pssst снова ... Вы действительно должны.
Армель Ларсье

Ответы:

13

Дополнительное примечание об этой проблеме:

vanished fileне должно вызывать условие IO error encountered -- skipping file deletion, но это часто происходит при создании резервной копии работающей системы.

Это покрыто ошибкой rsync # 7809 ( https://bugzilla.samba.org/show_bug.cgi?id=7809 ) и должно быть решено в следующем выпуске 3.1.0.

А пока пользуюсь:

--ignore-errors         delete even if there are I/O errors
Рето
источник
19

Со страницы руководства rsync:

--ignore-errors         delete even if there are I/O errors

Это решит вашу проблему.

SickAnimations
источник
2

Вы должны использовать исключающий файл, чтобы rsyncигнорировать файлы, которые он не может прочитать. Список может быть сгенерирован find . -exec test -r '{}'в исходном каталоге, а затем преобразован в нужный формат файла исключения rsync.

Кайл Джонс
источник
на самом деле мой исходный каталог довольно большой (10-12 ГБ). Поэтому каждый раз поиск файлов (не имеющих разрешения на чтение) не будет эффективным способом. Что вы говорите?
XemX
Запустите его один раз, чтобы создать список исключений, и не запускайте его снова, пока не будет добавлена ​​целая куча новых нечитаемых файлов. rsync выполняет тот же обход дерева, так что все не должно быть так плохо.
Кайл Джонс
Да. Но это то, на что похож мой сценарий. Ежедневный исходный каталог может представлять такие файлы. и мне нужно сделать резервную копию новых файлов на резервную машину.
XemX
Есть ли рабочее решение для этого? Я также использую rsync для резервного копирования из действующей системы, и когда на считывающем компьютере возникает ошибка ввода-вывода, файлы удаляются на целевом компьютере, что НЕ ДОЛЖНО БЫТЬ!
bzero