Как бы я использовал tar для полного резервного копирования и восстановления с системой на SSD и дома на HDD?

14

Как бы я использовал tar для полного резервного копирования и восстановления с системой на SSD и дома на HDD?

Существующие ответы по резервному копированию и восстановлению, по-видимому, не охватывают случай, когда root и home находятся на разных устройствах.

Построить это
источник
Добро пожаловать в АС! Вы ищете одноразовую вещь или непрерывное / периодическое решение? Место назначения резервной копии локальное или удаленное? tarна самом деле не заботятся об устройствах и точках монтирования. Пожалуйста, отредактируйте свой пост, чтобы включить дополнительную информацию.
Дэвид Фёрстер
«Существующие ответы о резервном копировании и восстановлении, по-видимому, не охватывают тот случай, когда root и home находятся на разных устройствах», причина: это плохая идея, и создание двух файлов резервных копий не только разумнее, но и более эффективно.
Rinzwind

Ответы:

17

Рекомендуется сделать ДВА резервных копии. 1 для / и 1 для / home, если они находятся в другом разделе. Если вы хотите, вам нужно добавить множество исключений для этой команды. Пример:

sudo su
cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 
tar -cvpzf backuphome.tar.gz --one-file-system /home/

создаст резервную копию вашего корневого каталога и исключит ВСЕ смонтированные разделы, например / media (вы не хотите создавать резервные копии внешних устройств (вы действительно этого не делаете)), и вы абсолютно НЕ хотите создавать резервные копии чего-то вроде / dev или / proc. И / home переходит в другую резервную копию.

В вышеупомянутом методе резервная копия хранится в /. Лучше хранить его на внешнем носителе; Затем вы можете поместить каталог перед backup.tar.gz и удалить --exclude=...из 1-й команды.

  • backup.tar.gz это резервная копия.
  • Это --excludeпредотвратит резервное копирование фактической резервной копии.
  • cvpzf: создавать, подробно, сохранять разрешения, сжимать, использовать файл.

  • --one-file-system - не включать файлы в другую файловую систему. Если вы хотите, чтобы другие файловые системы, такие как раздел / home, или внешний носитель, смонтированный в / media, были зарезервированы, вам нужно либо создать их резервную копию отдельно, либо пропустить этот флаг. Если вы пропустите этот флаг, вам нужно будет добавить еще несколько аргументов --exclude =, чтобы избежать нежелательных файловых систем. Это будут каталоги / proc, / sys, / mnt, / media, / run и / dev в корневом каталоге./ proc и / sys - это виртуальные файловые системы, которые предоставляют окна в переменные работающего ядра, поэтому вы не хотите пытаться делать резервные копии или восстанавливать их. / dev - это tmpfs, содержимое которого динамически создается и удаляется с помощью udev, поэтому вы также не хотите создавать резервные копии или восстанавливать его. Аналогично, / run - это tmpfs, который содержит переменные в работающей системе, резервное копирование которых не требуется ( Source ).


Так что ... если вы действительно хотите "однострочник", он может выглядеть так:

cd /
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc 
--exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / 

(Надеюсь, я получил все, что нужно исключить)


Восстановление будет

sudo su
cd /
tar xvzf backup.tar.gz

Я не использовал sudoперед командой tar, так как вы получите сообщения об ошибках относительно прав доступа (из-за файлов, принадлежащих пользователю root).

Rinzwind
источник
Ваше двухстрочное предложение сработало очень хорошо, за исключением того, что при резервном копировании системы я получил одно сообщение. "/lib64/ld-linux86-64.so2 tar: /: файл изменился, когда мы его читаем." Это нормально во время резервного копирования?
Buildit
Да. tar сообщит вам об изменениях в файле во время действия резервного копирования этого файла (он проверяет состояние файла до и после его резервного копирования). В целом эти сообщения безвредны. Если у вас есть собственное программное обеспечение / данные и вы нашли его в одном из этих файлов, я бы сам создал резервную копию.
Ринзвинд,
Стандартный tar не сжимает, он просто объединяет все в один файл (TAR = Tape ARchive). Попробуйте вместо этого gtar.
Алан Кэмпбелл
1
Если команда не будет создавать резервные копии определенных каталогов, нужно ли мне создавать их заново при восстановлении системы? Кроме того, какие преимущества имеет этот метод по сравнению с простым использованием Deja-Dup?
user4493605