Что лучше для резервного копирования сайта - rsync или git push

16

Я использую 2 веб-сервера LAMP у разных провайдеров для целей аварийного восстановления - мощный сервер и сервер резервного копирования.

В настоящее время я пересылаю все данные с живого сервера на сервер резервного копирования один раз каждые 4 часа.

Это работает нормально, но ускоряет загрузку системы, пока rsync выясняет, какие файлы были изменены.

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

Я должен был бы включить папку «live uploads» в репозиторий git; и тогда процесс резервного копирования будет:

live$ git add .
live$ git commit -a -m "{data-time} snapshot"
live$ git push backup live_branch

а затем подключите сервер резервного копирования после фиксации для проверки при каждом нажатии.

Каждый веб-сайт имеет размер от 50 до 2 ГБ. Я бы получил около 50 отдельных репозиториев git.

Это "лучшее" решение, чем rsync?

  • Git лучше при расчете, какие файлы изменились?
  • Git push более эффективен, чем rsync
  • Что я забыл?

Благодарность!

---- Данные некоторых сравнительных тестов ------

1) папка 52MB, затем добавление новой папки 500k (в основном текстовые файлы)

Rsync

sent 1.47K bytes  received 285.91K bytes  
total size is 44.03M  speedup is 153.22

real    0m0.718s    user    0m0.044s    sys     0m0.084s

мерзавец

Counting objects: 38, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (37/37), done.
Writing objects: 100% (37/37), 118.47 KiB, done.
Total 37 (delta 3), reused 0 (delta 0)

real    0m0.074s     user   0m0.029s    sys     0m0.045s

2) Папка 1.4G, затем добавление новой папки 18M (в основном изображения)

Rsync

sent 3.65K bytes  received 18.90M bytes
total size is 1.42G  speedup is 75.17

real    0m5.311s    user    0m0.784s    sys     0m0.328s

мерзавец

Counting objects: 108, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (106/106), done.
Writing objects: 100% (107/107), 17.34 MiB | 5.21 MiB/s, done.
Total 107 (delta 0), reused 0 (delta 0)

real    0m15.334s    user   0m5.202s    sys     0m1.040s

3) 52M папка с добавлением новой папки 18M (в основном изображения)

Rsync

sent 2.46K bytes  received 18.27M bytes  4.06M bytes/sec
total size is 62.38M  speedup is 3.41

real    0m4.124s    user    0m0.640s    sys     0m0.188s

мерзавец

Counting objects: 108, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (106/106), done.
Writing objects: 100% (107/107), 17.34 MiB | 5.43 MiB/s, done.
Total 107 (delta 1), reused 0 (delta 0)

real    0m6.990s    user    0m4.868s    sys     0m0.573s

4) папка 1.4G с добавлением новой папки 500k (в основном текстовая)

Rsync

sent 2.66K bytes  received 916.04K bytes  612.47K bytes/sec
total size is 1.42G  speedup is 1547.14

real    0m1.191s    user    0m0.180s    sys     0m0.268s

мерзавец

Counting objects: 49, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (48/48), done.
Writing objects: 100% (48/48), 177.90 KiB, done.
Total 48 (delta 3), reused 0 (delta 0)

real    0m1.776s    user    0m0.390s    sys     0m0.497s

5) папка 1.4G - без изменений

Rsync

sent 1.72K bytes  received 716.44K bytes  287.26K bytes/sec
total size is 1.42G  speedup is 1979.18

real    0m1.092s    user    0m0.168s    sys     0m0.272s

мерзавец

nothing to commit (working directory clean)

real    0m0.636s    user    0m0.268s    sys     0m0.348s

5) папка 52M - без изменений

Rsync

sent 528 bytes  received 88.40K bytes  59.29K bytes/sec
total size is 62.38M  speedup is 701.41

real    0m0.779s    user    0m0.044s    sys     0m0.144s

мерзавец

nothing to commit (working directory clean)

real    0m0.156s    user    0m0.057s    sys     0m0.097s
Дэвид Лэйнг
источник
3
что насчет "хорошего rsync"? Пик загрузки системы - это именно то, что вам нужно: завершите процесс AFAP, и это нормально, если это не мешает работе сайта.
1
Спасибо - я уже делаю "хороший rsync", который действительно помогает
Дэвид Лэйнг

Ответы:

4

На самом деле я бы предложил использовать сбалансированное сочетание обоих. Ваша основная резервная копия должна передаваться (по крайней мере) каждую ночь для работы с Git. Синхронизируйте его один или два раза в неделю на другой машине, которая находится далеко от рабочей коробки с помощью rsync.

Git поможет вам с немедленным восстановлением, а также упростит анализ данных благодаря тому, что ваша резервная копия имеет версию и журнал изменений. После каких-либо существенных изменений в данных вы можете сделать коммит, нажать git вручную и указать причину в журнале изменений. Если git выйдет из строя, тогда rsync придет на помощь, но имейте в виду, что вы все равно потеряете данные в зависимости от частоты rsync.

Практическое правило. Когда речь идет о резервном копировании и аварийном восстановлении, ничто не может гарантировать 100% восстановления.

Адитья Патавари
источник
2

Rsync является прекрасным инструментом синхронизации, но вы получите намного больше гибкости при работе с Git на сервере (ов), и pushING или pullИНГ обновления.

Я должен отслеживать и резервировать пользовательский контент на нашем сервере. На productionсервере есть копия git-репо, и каждую ночь он автоматически добавляет и фиксирует все новые файлы через cron. Они отправляются pushна наш сервер gitolite, который затем использует ловушки для синхронизации остальных серверов.

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

Я думаю, что вы в значительной степени хорошо понимаете, что предлагают оба, я просто изменил бы ваше мышление с серверов, проверяющих / экспортирующих кодовую базу, на наличие собственных репозиториев. Другая мысль заключается в том, что вы можете rsync ваши медиа-файлы (вы сказали 2 ГБ для некоторых из этих сайтов, что заставляет меня думать, что есть много типов медиа-файлов?) И не отслеживать их в Git.

Nic
источник
Я добавил некоторые данные о производительности; который показывает, что rsync почти всегда быстрее, чем git. Тем не менее, мне нравятся ваши замечания о дополнительных возможностях использования git-репозиториев на работающем сервере - мне интересно, не подходит ли гибридный подход, когда изменения вносятся в git-репозитарий, а затем git-репозитории перезаписываются в резервную копию сервер ...
Дэвид Лэйнг