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

Как скопировать каталог с одного Linux-сервера на другой с минимальным промежуточным периодом?

У меня есть довольно большой каталог на одном сервере (более 4000 файлов), который я хотел бы скопировать на другой сервер (содержащий предыдущую версию этого каталога). rsync - это первый вариант, но он переводит папку назначения в состояние ожидания на довольно длительный период времени (более минуты).

Хочу сделать немного иначе:

  1. gzip исходная папка
  2. scp архив на целевой сервер
  3. gunzip файл там
  4. удалить архив в источнике и в месте назначения

Как лучше всего добиться всего этого?

rsync имеет --delay-updates что, кажется, вам нужно:

«…

Эта опция помещает временный файл из каждого обновленного файла в каталог хранения до конца передачи, после чего все файлы переименовываются в быстрой последовательности. Это пытается сделать обновление файлов немного более атомарным. По умолчанию файлы помещаются в каталог с именем ". ~ Tmp ~" в каждом

… »

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

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

Остановите веб-службу на целевом сервере на 10 минут, выполните обновление любым удобным для вас способом (rsync в порядке), затем снова запустите веб-службу.

1-2-3: tar -c -O <source folder> | gzip -c | ssh <destination server> "gzip -d | tar -x "

4: rm <source folder>