Що краще для резервного копіювання веб-сайтів - rsync або git push


16

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

В даний час я rsync всі дані з живого сервера на резервний сервер раз на 4 години.

Це працює нормально, але система спайка завантажується, тоді як rsync визначає, які файли змінилися.

Оскільки всі веб-сайти також живуть у сховищах git, мені цікаво, чи буде git push краще технікою резервного копіювання.

Я мав би включити папку "живих завантажень" в git repo; і тоді процес резервного копіювання буде:

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

а потім на сервер резервного копіювання встановіть гачок для публікації повідомлень, щоб перевірити кожен натиск.

Кожен веб-сайт варіюється від 50M до 2GB. Я закінчую приблизно 50 окремими репо-рекментами.

Це "краще" рішення, ніж rsync?

  • Чи краще git підрахувати, які файли змінилися?
  • Чи є git push більш ефективним, ніж rsync
  • Що я забув?

Спасибі!

---- Дані деяких тестів порівняння ------

1) Папка 52 Мб, потім додається нова папка 500 Кб (переважно текстові файли)

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

git

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

git

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

git

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

git

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

git

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

git

nothing to commit (working directory clean)

real    0m0.156s    user    0m0.057s    sys     0m0.097s

3
як щодо "приємної rsync"? Системне завантаження системи - саме те, що ви хочете: Закінчіть процес AFAP, і це нормально, поки це не заважає роботі веб-сайту.

1
Дякую - я вже роблю "приємну rsync", яка допомагає
Девід Лаїнг

Відповіді:


4

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

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

Правило: якщо мова йде про резервне копіювання та відновлення після аварій, нічого не може гарантувати відновлення на 100%.


2

Rsync - чудовий інструмент синхронізації, але ви отримуєте набагато більшу універсальність, коли запускаєте Git на серверах (серверах), а також pushing або pulling оновлень.

Я повинен відстежувати та створювати резервні копії створеного користувачем вмісту на нашому сервері. На productionсервері є копія git repo, і він щовечора автоматично додає та збирає всі нові файли через cron. Вони спрямовані pushна наш гітолітний сервер, який потім використовує гачки для синхронізації решти серверів.

Оскільки на серверах є копії репо-борту, ви отримуєте не лише знімок, але детальну інформацію про історію, яка легко може врятувати вас, якщо з вашим сервером щось трапиться.

Я думаю, ви майже добре розумієте, що обидва пропонують, я просто змінив би свою думку про те, щоб сервери перевіряли / експортували кодову базу, щоб просто мати свої репости. Інша думка полягає в тому, що ви можете rsync ваші медіа-файли (ви сказали 2 Гб для деяких із цих сайтів, що змушує мене думати, що існує багато файлів мультимедійного типу?) І не відстежувати їх у Git.


Я додав деякі дані про ефективність; що показує, що rsync майже завжди швидший ніж git. Однак мені подобаються ваші моменти щодо додаткової потужності мати git repos на живому сервері - мені цікаво, чи не найкращий гібридний підхід, коли зміни пересуваються у gpo repo, а потім git repos переноситься на резервну копію сервер ...
Девід Лейнг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.