Ціле резервне копіювання та відновлення системи


0

Зараз я створюю резервну копію свого Raspberry Pi 3 в локальній NAS за допомогою цієї команди:

sudo dd if=/dev/mmcblk0 bs=1M | gzip > /mnt/MyCloud/"$(date +%FT%T)".gz

Це повинно працювати щодня, використовуючи роботу cron.

  • Чи достатньо цього для відновлення, якщо диск загине?
  • Чи є кращий / швидший спосіб?
  • Якщо я хочу відновити всю систему, як би мені це зробити? Привід стиснений, тому я не можу просто dd if=my-backup.gz of=/dev/mmcblk0, я думаю

Ви вимикаєте rPi, переміщуєте sdcard до іншої системи та виконуєте цю команду чи виконуєте це в реальній файловій системі?
Геннес

Жива система. Чому?
Аміт

3
Тому що, якщо ви не встановили його RO (лише для читання), ви можете створити резервну копію частин диска, на які записуєтесь під час резервного копіювання. Що означає, що у вас немає гарантованого резервного копіювання. Або монтуйте все, що ви створюєте в режимі резервного копіювання, або використовуйте резервні копії на основі файлової системи, які можуть компенсувати це. (наприклад, rsync з / dev / виключено).
Геннес

Відповіді:


2
  1. Це більше ніж достатньо для відновлення (насправді це не рекомендується робити в режимі живої системи, але якщо ви не використовуєте часто змінені файли, такі як база даних, наприклад, система може зрозуміти, як відновити себе під час відновлення. Якщо ви не у вас немає баз даних, тоді просто використовуйте sync;sync;syncперед запуском всієї резервної копії системи, щоб переконатися, що кеш файлу спалахнув на диску)
  2. читайте нижче для кращого рішення ІМХО
  3. просто використовувати gunzip -c /path/to/your.image.gz | dd of=/dev/sdX

ІМХО, це марно витрачання місця на резервному диску, ви клонуєте той самий незмінений вміст кілька разів. Використовуючи tarв інкрементальному режимі, він створить резервну копію лише змін між попередніми.

Простий приклад покрокового резервного копіювання з tar

#!/bin/sh

TAR='/bin/tar'
DATE='/bin/date'
SrcDir='/'
BkpDir='/mnt/MyCloud'
f=$($DATE '+%Y-%m-%dT%H-%M-%S')
snar="${BkpDir}/snar.diff" # If you need full backup then remove 
                           # ${snar} file before doing backup

[ -f "${snar}" ] && level=1 || level=0

$TAR -czf "${BkpDir}/${f}_dump.level.${level}.tgz"   \
    --listed-incremental=${snar}    \
    --no-check-device               \
    --totals                        \
    --level=${level}                \
    --directory=${SrcDir}           \
    --exclude=tmp/*                 \
    --exclude=media/*               \
    --exclude=mnt/*                 \
    --exclude=proc/*                \
    --exclude=sys/*                 \
    --exclude=dev/*                 \
    --exclude=run/*                 \
    --exclude=var/tmp/*             \
    --exclude=var/run/*             \
    --exclude=var/lock/*            \
    --exclude=var/cache/locate/*    \
    --exclude=var/dcc/dccifd                \
    --exclude=var/lib/amavis/amavisd.sock   \
    --exclude=var/lib/php5/sess_*           \
    --exclude=var/spool/postfix/dev/*       \
    --exclude=var/spool/postfix/pid/*       \
    --exclude=var/spool/postfix/private/*   \
    --exclude=var/spool/postfix/public/*    \
    --exclude=backup                        \
    --exclude=${BkpDir}                     \
    .
    exit $?

Дякую! Я розглядав використання дьогтю, і це краще рішення. Я застряг у бігу: cd / && tar -cvf mnt/MyCloud/backup-1.tar.gz -g mnt/MyCloud/backup.snar dev/mmcblk0 зробити так, щоб дьоготь бігав з /, оскільки він не любить косої риси, і робити поступовий. На жаль, він просто створює файл snar 1kb та резервну копію 10kb .. Я щось пропустив?
Аміт

Я редагую свою відповідь, щоб додати простий приклад. Не використовуйте vваріант, tarякщо ви збираєтесь використовувати його в cron, це сповільнить процес резервного копіювання багато!
Олексій

0

Можливо, мені тут просто, але, переглянувши варіанти DD та crontab для планування резервного копіювання тощо, я зважився на інший підхід, почасти тому, що більше звик до систем Windows.

  1. Вимкнення RPi.
  2. Вийміть SD-карту.
  3. Перейдіть на ПК з Windows (Linux працював би, але, мабуть, використовуйте DD).
  4. Використовуйте Win32DiskImager , щоб ПРОЧИТАТИ вміст в файл.

Я роблю це лише кожні кілька місяців, окрім оновлень системи, дуже мало змін на SDCard. Завантажити програму Win32 Disk Imager @ sourceforge

Це забезпечить повне резервне копіювання системи. Як було сказано вище, мені було мало сенсу мати кілька копій всього мого диска, крім того, щоб зайняти місце. Мій метод дає повну резервну копію, а інші мої файли (dlna музика та папка webserve для напр.) Ніяк не зберігаються на sdcard, вони знаходяться на USB-накопичувачі. Мій шлях простий, як я, але він працює. В іншому випадку підсилення додаткового резервного копіювання виглядає дуже добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.