Учебники

Linux Admin — Резервное копирование и восстановление

Прежде чем исследовать методы развертывания стандартного плана резервного копирования, специфичные для CentOS, давайте сначала обсудим типичные аспекты политики резервного копирования стандартного уровня. Первое, к чему мы хотим привыкнуть, это правило резервного копирования 3-2-1 .

3-2-1 Стратегия резервного копирования

Во всей отрасли вы часто слышите термин «резервная модель 3-2-1». Это очень хороший подход для реализации плана резервного копирования. 3-2-1 определяется следующим образом: 3 копии данных; например, у нас может быть рабочая копия; копия, помещенная на сервер CentOS, предназначенный для резервирования с использованием rsync; и повернутые резервные копии USB сделаны из данных на сервере резервного копирования. 2 разных резервных носителя. На самом деле в этом случае у нас будет три разных носителя для резервного копирования: рабочая копия на SSD ноутбука или рабочей станции, данные сервера CentOS на массиве RADI6 и внешнее резервное копирование на USB-накопители. 1 копия данных вне офиса; мы вращаем USB-накопители вне площадки каждый вечер. Другим современным подходом может быть поставщик облачного резервного копирования.

Восстановление системы

План восстановления на «голое железо» — это просто план, разработанный администратором CentOS, для обеспечения работы жизненно важных систем со всеми нетронутыми данными. Предполагая 100% системный сбой и потерю всего предыдущего системного оборудования, администратор должен иметь план для достижения времени безотказной работы с минимальными затратами времени на обработку пользовательских данных. Монолитное ядро, используемое в Linux, на самом деле значительно упрощает восстановление с использованием системных образов с использованием системных образов. Где Windows использует архитектуру микроядра.

Полное восстановление данных и восстановление с нуля обычно выполняется с помощью комбинации методов, включая рабочие, настроенные рабочие образы дисков ключевых операционных серверов, избыточные резервные копии пользовательских данных, соблюдая правило 3-2-1. Даже некоторые конфиденциальные файлы, которые могут храниться в безопасном, пожаробезопасном сейфе с ограниченным доступом к персоналу доверенной компании.

План многофазного восстановления и восстановления данных с использованием собственных инструментов CentOS может состоять из:

  • dd создавать и восстанавливать производственные образы дисков настроенных серверов

  • rsync для создания инкрементных резервных копий всех пользовательских данных

  • tar & gzip для хранения зашифрованных резервных копий файлов с паролями и заметками от администраторов. Обычно это можно записать на USB-накопитель, зашифровать и заблокировать в сейфе, к которому имеет доступ старший менеджер. Кроме того, это гарантирует, что кто-то другой будет знать жизненно важные учетные данные безопасности, если текущий администратор выиграет в лотерее и исчезнет на солнечном острове.

dd создавать и восстанавливать производственные образы дисков настроенных серверов

rsync для создания инкрементных резервных копий всех пользовательских данных

tar & gzip для хранения зашифрованных резервных копий файлов с паролями и заметками от администраторов. Обычно это можно записать на USB-накопитель, зашифровать и заблокировать в сейфе, к которому имеет доступ старший менеджер. Кроме того, это гарантирует, что кто-то другой будет знать жизненно важные учетные данные безопасности, если текущий администратор выиграет в лотерее и исчезнет на солнечном острове.

Если система выходит из строя из-за аппаратного сбоя или сбоя, следующие этапы восстановления операций будут следующими:

  • Создайте рабочий сервер с настроенным голым железным образом

  • Восстановление данных на рабочий сервер из резервных копий

  • Иметь физический доступ к учетным данным, необходимым для выполнения первых двух операций

Создайте рабочий сервер с настроенным голым железным образом

Восстановление данных на рабочий сервер из резервных копий

Иметь физический доступ к учетным данным, необходимым для выполнения первых двух операций

Используйте rsync для резервного копирования на уровне файлов

rsync — отличная утилита для синхронизации каталогов файлов локально или на другом сервере. Системный администратор годами использовал rsync , поэтому он очень хорошо подходит для резервного копирования данных. По мнению автора, одной из лучших функций синхронизации является возможность сценариев из командной строки.

В этом уроке мы обсудим rsync различными способами —

  • Исследуйте и поговорите о некоторых распространенных вариантах
  • Создать локальные резервные копии
  • Создавайте удаленные резервные копии по SSH
  • Восстановить локальные резервные копии

rsync назван по назначению: удаленная синхронизация и является мощной и гибкой в ​​использовании.

Ниже приведено базовое удаленное резервное копирование rsync через ssh:

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
rdc@192.168.1.143:home/rdc/ Documents/RemoteStuff/
rdc@192.168.1.143's password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

Следующая синхронизация отправила почти 2,3 ГБ данных по нашей локальной сети. Прелесть rsync в том, что он работает постепенно на уровне блоков для каждого файла отдельно. Это означает, что если мы изменим только два символа в текстовом файле размером 1 МБ, только один или два блока будут переданы через сеть при следующей синхронизации!

Кроме того, инкрементная функция может быть отключена в пользу большей пропускной способности сети, используемой для меньшей загрузки ЦП. Это может оказаться целесообразным, если постоянно копировать несколько файлов базы данных по 10 МБ каждые 10 минут на выделенной резервной локальной сети емкостью 1 ГБ. Причина заключается в следующем: они всегда будут меняться и будут передаваться постепенно каждые 10 минут и могут облагаться нагрузкой на удаленный ЦП. Поскольку общая нагрузка передачи не будет превышать 5 минут, мы можем просто синхронизировать файлы базы данных в полном объеме.

Ниже приведены наиболее распространенные ключи с rsync

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path

переключатель действие
-a Режим архива и предполагает -r, -p, -t, -g, -l
-d Синхронизировать только дерево каталогов, без файлов
Рекурсивно в каталог
-l Копировать символические ссылки как символические ссылки
-п Сохранить разрешения
Сохранить группу
-v Подробный вывод
-z Сжатие по сети
-ИКС Сохранить расширенные атрибуты
Сохранить ACL
-t Сохранить временные метки
-W Передача всего файла, а не инкрементальных блоков
-u Не перезаписывайте файлы на цели
—прогресс Показать прогресс передачи
—удалять Удалить старые файлы на цели
—max-size = XXX Максимальный размер файла для синхронизации

Когда использовать rsync

Мое личное предпочтение для rsync — при резервном копировании файлов с исходного хоста на целевой хост. Например, все домашние каталоги для восстановления данных или даже вне их и в облаке для аварийного восстановления.

Локальное резервное копирование с rsync

Мы уже видели, как передавать файлы с одного хоста на другой. Тот же метод можно использовать для локальной синхронизации каталогов и файлов.

Давайте сделаем ручное добавочное резервное копирование / etc / в каталоге нашего корневого пользователя.

Во-первых, нам нужно создать каталог с ~ / root для синхронизированной резервной копии —

[root@localhost rdc]# mkdir /root/etc_baks

Затем убедитесь, что на диске достаточно свободного места.

[root@localhost rdc]# du -h --summarize /etc/ 
49M    /etc/
 
[root@localhost rdc]# df -h 
Filesystem           Size     Used     Avail    Use%     Mounted on 
/dev/mapper/cl-root   43G      15G        28G    35%         /

Мы хороши для синхронизации всего нашего каталога / etc / —

rsync -aAvr /etc/ /root/etc_baks/

Наш синхронизированный каталог / etc / —

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

Теперь давайте сделаем инкрементную rsync —

[root@localhost etc_baks]# rsync -aAvr --progress  /etc/ /root/etc_baks/
sending incremental file list

test_incremental.txt 
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)
   
sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

Только наш файл test_incremental.txt был скопирован.

Удаленное дифференциальное резервное копирование с rsync

Давайте сделаем наше первоначальное полное резервное копирование rsync на сервер с развернутым планом резервного копирования. В этом примере фактически выполняется резервное копирование папки на рабочей станции Mac OS X на сервер CentOS. Другим важным аспектом rsync является то, что его можно использовать на любой платформе, на которую был перенесен rsync.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143's password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

Теперь мы создали резервную копию папки с рабочей станции на сервере с томом RAID6 с повернутым носителем аварийного восстановления, который хранится вне сайта. Использование rsync дало нам стандартное резервное копирование 3-2-1 только с одним сервером, имеющим дорогой избыточный дисковый массив и повернутые дифференциальные резервные копии.

Теперь давайте сделаем еще одну резервную копию этой же папки с помощью rsync после того, как был добавлен новый файл с именем test_file.txt .

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff 
rdc@192.168.1.143's password:  
sending incremental file list 
 ./ 
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

Как видите, только новый файл был доставлен на сервер через rsync . Дифференциальное сравнение было сделано для каждого файла отдельно.

Несколько вещей, на которые следует обратить внимание: это только копирует новый файл: test_file.txt, так как это был единственный файл с изменениями. Rsync использует SSH. Нам не нужно было использовать нашу учетную запись root ни на одной машине.

Простой, мощный и эффективный rsync отлично подходит для резервного копирования целых папок и структур каталогов. Однако rsync сам по себе не автоматизирует процесс. Вот где нам нужно покопаться в нашем наборе инструментов и найти лучший, маленький и простой инструмент для работы.

Для автоматизации резервного копирования rsync с помощью cronjobs важно, чтобы пользователи SSH были настроены с использованием ключей SSH для аутентификации. Это в сочетании с cronjobs позволяет выполнять rsync автоматически через определенные промежутки времени.

Используйте DD для блочных изображений восстановления голого металла

DD — это утилита для Linux, которая существует с самого начала появления ядра Linux и GNU Utilities.

Дд в простейшем смысле копирует изображение выбранной области диска. Затем предоставляет возможность копировать выбранные блоки физического диска. Поэтому, если у вас нет резервных копий, когда dd записывает на диск, все блоки заменяются. Потеря предыдущих данных превышает возможности восстановления даже для дорогостоящего восстановления данных профессионального уровня.

Весь процесс создания загрузочного образа системы с помощью dd выглядит следующим образом:

  • Загрузка с сервера CentOS с загрузочного дистрибутива Linux
  • Найдите обозначение загрузочного диска для образа
  • Определите место, где будет храниться образ восстановления
  • Найдите размер блока, используемого на вашем диске
  • Запустите операцию изображения dd

В этом уроке ради времени и простоты мы будем создавать ISO-образ основной загрузочной записи с виртуальной машины CentOS. Затем мы будем хранить это изображение вне сайта. В случае, если наша MBR повреждена и требует восстановления, тот же процесс может быть применен ко всему загрузочному диску или разделу. Тем не менее, время и дисковое пространство, необходимое для этого урока, немного запредельные.

Администраторам CentOS рекомендуется научиться восстанавливать полностью загрузочный диск / раздел в тестовой среде и выполнять восстановление «с нуля». Это избавит от большого давления, когда в конечном итоге нужно будет завершить практику в реальной ситуации, когда менеджеры и несколько десятков конечных пользователей будут считать время простоя. В таком случае 10 минут на то, чтобы разобраться, могут показаться вечностью и потеть.

Примечание. При использовании dd не путайте исходный и целевой тома. Вы можете уничтожить данные и загрузочные серверы, скопировав свою резервную копию на загрузочный диск. Или, возможно, хуже уничтожить данные навсегда, копируя данные на очень низком уровне с помощью DD.

Ниже приведены общие параметры командной строки и параметры для dd

переключатель действие
если = В файле или источнике для копирования
из = Выходной файл или копия входного файла
бс Установите размер блока ввода и вывода
набл Установить размер выходного файла
фунты Установить размер входного файла
подсчитывать Установите количество блоков для копирования
конв Дополнительные опции, которые нужно добавить для обработки изображений
Нет ошибок Не прекращайте обработку ошибки
синхронизировать Колодки неподходящих входных блоков в случае ошибки или смещения

Примечание о размере блока. Размер блока по умолчанию для dd составляет 512 байт. Это был стандартный размер блока жестких дисков меньшей плотности. Современные жесткие диски с более высокой плотностью увеличились до 4096 байт (4 КБ), что позволяет использовать диски размером от 1 ТБ и более. Таким образом, мы хотим проверить размер дискового блока перед использованием dd с более новыми жесткими дисками большей емкости.

В этом руководстве вместо работы на рабочем сервере с dd мы будем использовать установку CentOS, работающую в VMWare. Мы также настроим VMWare для загрузки загрузочного ISO-образа Linux вместо того, чтобы работать с загрузочной флешкой USB.

Сначала нам нужно скачать образ CentOS под названием: CentOS Gnome ISO . Это почти 3 ГБ, поэтому рекомендуется всегда сохранять копию для создания загрузочных USB-накопителей и загрузки на виртуальные серверные установки для устранения неполадок и получения изображений с нуля.

Другие загрузочные дистрибутивы Linux будут работать так же хорошо. Linux Mint можно использовать для загрузочных ISO-образов, поскольку он имеет отличную поддержку оборудования и отшлифованные инструменты для графического интерфейса пользователя для обслуживания.

Загрузочный образ CentOS GNOME Live можно загрузить по адресу : http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Давайте настроим установку VMWare Workstation для загрузки с нашего загрузочного образа Linux. Шаги предназначены для VMWare в OS X. Однако они одинаковы для VMWare Workstation в Linux, Windows и даже Virtual Box.

Примечание. Использование решения для виртуального рабочего стола, такого как Virtual Box или VMWare Workstation, является отличным способом настройки лабораторных сценариев для изучения задач администрирования CentOS. Он обеспечивает возможность установки нескольких установок CentOS, практически без аппаратной конфигурации, позволяя человеку сосредоточиться на администрировании, и даже сохранить состояние сервера перед внесением изменений.

Сначала давайте настроим виртуальный CD-ROM и прикрепим наш ISO-образ для загрузки вместо установки виртуального сервера CentOS —

Образ ISO

Теперь установите загрузочный диск —

Загрузочный диск

Теперь при загрузке наша виртуальная машина будет загружаться из загрузочного ISO-образа CentOS и разрешать доступ к файлам на сервере Virtual CentOS, который был предварительно настроен.

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

MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Мы нашли оба наших физических диска: sda и sdb . Каждый имеет размер блока 512 байт. Итак, теперь мы запустим команду dd, чтобы скопировать первые 512 байт для нашей MBR на SDA1.

Лучший способ сделать это —

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz 
1+0 records in 
1+0 records out 
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls /mnt/sdb/ 
   mbr-iso.gz
   
[root@mint rdc]#

Вот так, у нас есть полный образ нашей основной загрузочной записи. Если у нас будет достаточно места для образа загрузочного диска, мы также можем легко создать полный загрузочный образ системы —

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

Conv = sync используется, когда байты должны быть выровнены для физического носителя. В этом случае dd может получить ошибку, если точные выравнивания 4K не читаются (скажем … файл, который составляет всего 3K, но должен занимать минимум один блок 4K на диске. Или, просто чтение ошибки и файл не может быть прочитан дд.) Таким образом, dd с conv = sync, noerror будет заполнять 3K тривиальными, но полезными данными на физическом носителе с выравниванием блоков 4K. Пока не отображается ошибка, которая может завершить большую операцию.

При работе с данными с дисков мы всегда хотим включить: conv = sync, параметр noerror .

Это просто потому, что диски не являются потоками, такими как данные TCP. Они состоят из блоков, выровненных до определенного размера. Например, если у нас есть 512-байтовые блоки, для файла размером всего 300 байт все еще нужны полные 512 байт дискового пространства (возможно, 2 блока для информации inode, такой как разрешения и другая информация файловой системы).

Используйте gzip и tar для безопасного хранения

gzip и tar — две утилиты, к которым должен привыкнуть администратор CentOS. Они используются для гораздо большего, чем просто распаковка архивов.

Использование Gnu Tar в CentOS Linux

Tar — это утилита архивирования, похожая на winrar в Windows. Его название Tape Archive, сокращенно tar, подводит итог утилиты. tar возьмет файлы и поместит их в архив для логического удобства. Следовательно, вместо десятков файлов, хранящихся в / etc. мы могли бы просто «скопировать» их в архив для удобства резервного копирования и хранения.

В течение многих лет tar является стандартом для хранения архивных файлов в Unix и Linux. Следовательно, использование tar вместе с gzip или bzip считается наилучшей практикой для архивов в каждой системе.

Ниже приведен список общих параметров командной строки и параметров, используемых с tar —

переключатель действие
Создает новый архив .tar
Выдержки в другой каталог
-j Использует сжатие bzip2
-z Использует сжатие GZIP
-v Подробный прогресс архивирования шоу
-t Содержит список архивов
-f Имя файла архива
-Икс Извлекает архив tar

Ниже приведен основной синтаксис для создания архива tar .

tar -cvf [tar archive name]

Замечание о механизмах сжатия с помощью tar. Рекомендуется придерживаться одной из двух распространенных схем сжатия при использовании tar: gzip и bzip2. GZIP-файлы потребляют меньше ресурсов процессора, но обычно имеют больший размер. В то время как bzip2 сжимается дольше, они используют больше ресурсов процессора; но приведет к меньшему конечному размеру файла.

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

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
GZIP .tar.gz
GZIP .tgz

При необходимости извлечения архивов из коробки Windows или для использования в Windows рекомендуется использовать .tar.tbz или .tar.gz, так как большинство трехсимвольных расширений будут путать Windows и только администраторов Windows (однако это иногда желаемый результат)

Давайте создадим сжатый архив tar из наших удаленных резервных копий, скопированных с рабочей станции Mac —

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ 
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

Примечание. Вместо того, чтобы добавлять все файлы непосредственно в архив, мы заархивировали всю папку RemoteStuff . Это самый простой способ. Просто потому, что при извлечении весь каталог RemoteStuff извлекается со всеми файлами в текущем рабочем каталоге как ./currentWorkingDirectory/RemoteStuff/

Теперь давайте распакуем архив в каталог / root / home.

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

Как видно выше, все файлы были просто извлечены в каталог, содержащийся в нашем текущем рабочем каталоге.

[root@centos ~]# ls -l 
total 2262872 
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg 
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks 
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg 
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff 
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz 
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

Используйте gzip для сжатия резервных копий файлов

Как отмечалось ранее, мы можем использовать bzip2 или gzip из tar с ключами командной строки -j или -z . Мы также можем использовать gzip для сжатия отдельных файлов. Однако использование одних только bzip или gzip не дает столько возможностей, сколько в сочетании с tar .

При использовании gzip действие по умолчанию — удалить исходные файлы, заменив каждый сжатой версией с добавлением расширения .gz.

Некоторые общие параметры командной строки для gzip:

переключатель действие
Сохраняет файлы после помещения в архив
-l Получить статистику для сжатого архива
Рекурсивно сжимает файлы в каталогах
-1 до 9 Определяет уровень сжатия по шкале от 1 до 9

gzip более или менее работает на файловой основе, а не на архивной основе, как некоторые утилиты Windows O / S zip. Основной причиной этого является то, что tar уже предоставляет расширенные возможности архивирования. GZIP предназначен для обеспечения только механизма сжатия.

Следовательно, когда вы думаете о gzip , подумайте об одном файле. Когда вы думаете о нескольких файлах, подумайте об архивах tar . Давайте теперь рассмотрим это с нашим предыдущим архивом tar .

Примечание. Опытные специалисты по Linux часто будут ссылаться на архивный архив как на тарбол.

Давайте сделаем еще один архив tar из нашей резервной копии rsync .

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

В демонстрационных целях давайте распакуем только что созданный tar-архив и скажем gzip сохранить старый файл. По умолчанию без опции -c gzip заменит весь архив tar на файл .gz .

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

Попробуем проверить ключ -l с помощью gzip .

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name 
     2317140467          2326661120        0.4% RemoteStuff.tar
     
[root@centos Documents]#

Чтобы продемонстрировать, чем gzip отличается от Windows Zip Utilities, давайте запустим gzip для папки с текстовыми файлами.

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

Теперь давайте используем опцию -r для рекурсивного сжатия всех текстовых файлов в каталоге.

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz
 
[root@centos Documents]#

Увидеть? Не то, что некоторые могли ожидать. Все исходные текстовые файлы были удалены, и каждый был сжат по отдельности. Из-за этого поведения лучше всего думать о gzip в одиночку, когда нужно работать в отдельных файлах.

Работая с тарболами , давайте распакуем наш rsynced тарбол в новый каталог.

[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

Как показано выше, мы распаковали и распаковали наш tar-архив в каталог / tmp.

[root@centos Documents]# ls /tmp 
hsperfdata_root
RemoteStuff

Шифровать архивы TarBall

Шифрование архивных архивов для хранения защищенных документов, к которым, возможно, потребуется доступ другим сотрудникам организации, в случае аварийного восстановления может оказаться сложной задачей. Есть в основном три способа сделать это: либо использовать GnuPG, либо использовать openssl, либо использовать утилиту третьей части.

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

Openssl, как и GnuPG, может делать то, что мы хотим, и поставляется с CentOS. Но опять же, он не предназначен специально для того, чтобы делать то, что мы хотим, и шифрование подвергалось сомнению в сообществе безопасности.

Нашим выбором является утилита под названием 7zip . 7zip — это утилита сжатия, подобная gzip, но с гораздо большим количеством функций. Как и Gnu Gzip, 7zip и его стандарты находятся в сообществе открытого кода. Нам просто нужно установить 7zip из нашего репозитория EHEL (следующая глава подробно расскажет об установке расширенных корпоративных репозиториев).

Установите 7zip на Centos

7zip — это простая установка после загрузки и конфигурирования наших репозиториев EHEL в CentOS.

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04      
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

Все просто, 7zip установлен и готов к использованию с 256-битным шифрованием AES для наших архивных архивов.

Теперь давайте используем 7z для шифрования нашего архива gzip паролем. Синтаксис для этого довольно прост —

7z a -p <output filename><input filename>

Где : добавить в архив и -p: зашифровать и запросить фразу-пароль

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

Теперь у нас есть архив .7z, который шифрует сжатый архив с 256-битным AES.

Примечание. 7zip использует 256-битное шифрование AES с хешем пароля и счетчика SHA-256, повторяемое до 512 Кбайт для получения ключа. Это должно быть достаточно безопасно, если используется сложный ключ.

Процесс шифрования и повторного сжатия архива может занять некоторое время с большими архивами.

7zip — это расширенное предложение с большим количеством функций, чем gzip или bzip2. Тем не менее, это не так стандартно с CentOS или среди мира Linux. Таким образом, другие утилиты должны использоваться как можно чаще.