Я выполняю большое задание 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
Эта опция помещает временный файл из каждого обновленного файла в каталог хранения до конца передачи, после чего все файлы переименовываются в быстрой последовательности. Это пытается сделать обновление файлов немного более атомарным.