1

Есть ли способ rsync для папки в папку для удаления сервера, но перемещать все только после того, как вся передача сделана?

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

Я предпочел бы переместить всю папку после того, как все будет перенесено на сервер (что занимает примерно 1 с)

2 ответа2

1

Вы ищете опцию --delay-updates . От 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).
0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .