Rsync для фиксации передачи/mv после того, как все будет локально сохранено

Rsync для фиксации передачи/mv после того, как все будет локально сохранено

Есть ли способ синхронизировать папку с удаленной серверной папкой, но переместить все только после завершения всей передачи?

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

Я бы предпочел, чтобы вся папка была перемещена после того, как все будет передано на сервер (что займет около ~1 с)

решение1

Вы ищете--задержка-обновленийвариант. От man rsync:

   --delay-updates
          This  option puts the temporary file from each updated file into
          a holding directory until the end of the transfer, at which time
          all  the files are renamed into place in rapid succession.  This
          attempts to make the updating of the files a little more atomic.
          [...]
          See  also the "atomic-rsync" perl script in the "support" subdir
          for an update algorithm  that  is  even  more  atomic  (it  uses
          --link-dest and a parallel hierarchy of files).

решение2

Самый безопасный способ — это rsync поместить файлы в альтернативный каталог за пределами docroot веб-сервера. Затем измените конфигурацию сервера, чтобы указать docroot на новую папку и дайте сигнал веб-серверу выполнить"изящный"перезагрузка его конфигурации. С Apache это должно гарантировать, что ни один запрос не будет неправильно обработан или потерян.

USR1 или graceful сигнал заставляет родительский процесс советовать дочерним процессам выйти после их текущего запроса (или выйти немедленно, если они ничего не обслуживают). Родитель перечитывает свои файлы конфигурации и заново открывает свои файлы журналов. Когда каждый дочерний процесс умирает, родитель заменяет его дочерним процессом из нового поколения конфигурации, который немедленно начинает обслуживать новые запросы.

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

Связанный контент