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

Приведет ли изменение разрешений к повторной загрузке rsync?

Я выполняю большое задание rsync, которое выполняется часами и будет работать еще пару.

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

Мне нужно беспокоиться, или разрешения не имеют ничего общего с самой синхронизацией?

Я копирую с rsync -rchavzP

Это зависит ... Если изменение разрешений приводит к тому, что rsync не может читать и / или писать на вашем веб-сервере, задание должно завершиться ошибкой.

Обычно изменение разрешений обрабатывается разумно, и rsync изменяет разрешения только в том случае, если файл не изменился, без передачи самого файла. Опция --no-perms должен гарантировать, что разница в разрешениях для целевого местоположения не будет «исправлена».

В более ранних версиях rsync полный список файлов, используемый для определения того, что копировать, был сгенерирован первым, а последующие изменения IIRC в локальных / или удаленных списках файлов после первоначального сканирования, которые не были приняты, позволяли вам изменять разрешения и т. Д., Но

-r, --recursive ... Начиная с rsync 3.0.0, рекурсивный алгоритм, используемый теперь, представляет собой инкрементное сканирование, которое использует гораздо меньше памяти, чем раньше, и начинает передачу после завершения сканирования первых нескольких каталогов. ...
Некоторые параметры требуют, чтобы rsync знал полный список файлов, поэтому эти параметры отключают режим инкрементной рекурсии. Это включает: --delete-before, --delete-after, --prune-empty-dirs, и --delay-updates.

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

Лучше, конечно, полностью избежать проблемы и использовать rsync для настройки правильных разрешений в первую очередь с чем-то вроде rsync --no-p --chmod=ugo=rwX

--chmod Этот параметр указывает rsync применить один или несколько разделенных запятыми chmod Полученное значение обрабатывается так, как если бы это были разрешения, которые отправляющая сторона предоставила для файла ...

Обратитесь к руководству для получения дополнительной информации.

Для длительных заданий rsync вам может пригодиться опция отложенного обновления:

--delay-updates Эта опция помещает временный файл из каждого обновленного файла в каталог хранения до конца передачи, после чего все файлы переименовываются в быстрой последовательности. Это пытается сделать обновление файлов немного более атомарным.