Administrator systemu Linux - tworzenie kopii zapasowych i odzyskiwanie

Przed zapoznaniem się z metodami wdrażania standardowego planu tworzenia kopii zapasowych specyficznymi dla CentOS, omówmy najpierw typowe zagadnienia dotyczące zasad tworzenia kopii zapasowych na poziomie standardowym. Pierwszą rzeczą, do której chcemy się przyzwyczaić, jest3-2-1 backup rule.

3-2-1 Strategia tworzenia kopii zapasowych

W całej branży często można usłyszeć termin model kopii zapasowej 3-2-1. Jest to bardzo dobre podejście do realizacji planu tworzenia kopii zapasowych. 3-2-1 definiuje się następująco:3kopie danych; na przykład możemy mieć kopię roboczą; kopia umieszczona na serwerze CentOS przeznaczona do redundancji przy użyciu rsync; i rotowane, zewnętrzne kopie zapasowe USB są tworzone z danych na serwerze kopii zapasowych.2różne nośniki kopii zapasowych. W tym przypadku mielibyśmy trzy różne nośniki kopii zapasowych: kopię roboczą na dysku SSD laptopa lub stacji roboczej, dane serwera CentOS na macierzy RADI6 oraz kopie zapasowe poza siedzibą firmy na dyskach USB.1kopia danych poza siedzibą; co noc obracamy dyski USB poza siedzibą firmy. Innym nowoczesnym podejściem może być dostawca kopii zapasowych w chmurze.

Odzyskiwanie systemu

Goły metal przywrócić planu jest po prostu plan określonymi przez administratora CentOS, aby uzyskać istotne systemy on-line ze wszystkimi danymi nienaruszone. Zakładając 100% awarie systemów i utratę całego sprzętu systemowego z przeszłości, administrator musi mieć plan osiągnięcia czasu sprawności z nienaruszonymi danymi użytkownika, co kosztuje minimalny czas przestoju. Monolityczne jądro używane w Linuksie w rzeczywistości sprawia, że ​​przywracanie bare metal przy użyciu obrazów systemu jest znacznie łatwiejsze niż Windows. Gdzie Windows używa architektury mikro-jądra.

Pełne przywracanie danych i odzyskiwanie „od zera” są zwykle realizowane poprzez kombinację metod, w tym działające, skonfigurowane produkcyjne obrazy dysków kluczowych serwerów operacyjnych, nadmiarowe kopie zapasowe danych użytkownika zgodnie z regułą 3-2-1. Nawet niektóre poufne pliki, które mogą być przechowywane w bezpiecznym, ognioodpornym sejfie z ograniczonym dostępem dla zaufanego personelu firmy.

Wielofazowy plan przywracania stanu fizycznego i odzyskiwania danych przy użyciu natywnych narzędzi CentOS może obejmować:

  • dd, aby tworzyć i odtwarzać produkcyjne obrazy dysków skonfigurowanych serwerów

  • rsync, aby tworzyć przyrostowe kopie zapasowe wszystkich danych użytkownika

  • tar & gzip do przechowywania zaszyfrowanych kopii zapasowych plików z hasłami i notatkami od administratorów. Zwykle można to umieścić na dysku USB, zaszyfrować i zamknąć w sejfie, do którego ma dostęp starszy menedżer. Zapewnia to również, że ktoś inny zna ważne dane uwierzytelniające, jeśli obecny administrator wygra loterię i zniknie gdzieś na słonecznej wyspie.

Jeśli system ulegnie awarii z powodu awarii sprzętu lub katastrofy, następujące będą różne fazy operacji przywracania -

  • Zbuduj działający serwer ze skonfigurowanym obrazem fizycznym

  • Przywróć dane na działający serwer z kopii zapasowych

  • Uzyskaj fizyczny dostęp do poświadczeń potrzebnych do wykonania dwóch pierwszych operacji

Użyj rsync do tworzenia kopii zapasowych na poziomie plików

rsync to świetne narzędzie do synchronizowania katalogów plików lokalnie lub na innym serwerze. rsync jest używany od lat przez administratorów systemów, dlatego jest bardzo udoskonalony pod kątem tworzenia kopii zapasowych danych. W opinii autora jedną z najlepszych cech synchronizacji jest możliwość obsługi skryptów z wiersza poleceń.

W tym samouczku omówimy rsync na różne sposoby -

  • Poznaj i porozmawiaj o niektórych typowych opcjach
  • Twórz lokalne kopie zapasowe
  • Twórz zdalne kopie zapasowe przez SSH
  • Przywróć lokalne kopie zapasowe

rsynczostała nazwana ze względu na swój cel: Remote Sync i jest zarówno potężna, jak i elastyczna w użyciu.

Poniżej znajduje się podstawowa zdalna kopia zapasowa rsync przez ssh -

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'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$

Następująca synchronizacja wysłała prawie 2,3 GB danych w naszej sieci LAN. Piękno rsync polega na tym, że działa on przyrostowo na poziomie bloku, dla każdego pliku. Oznacza to, że jeśli zmienimy tylko dwa znaki w pliku tekstowym o wielkości 1 MB, tylko jeden lub dwa bloki zostaną przesłane przez sieć LAN podczas następnej synchronizacji!

Ponadto funkcję przyrostową można wyłączyć na rzecz większej przepustowości sieci używanej przy mniejszym wykorzystaniu procesora. Może się to okazać wskazane, jeśli stale kopiujesz kilka plików bazy danych o wielkości 10 MB co 10 minut na dedykowanej sieci Backup-Lan o pojemności 1 GB. Powód jest taki: zawsze będą się zmieniać i będą transmitować stopniowo co 10 minut i mogą obciążać zdalny procesor. Ponieważ całkowite obciążenie transferu nie przekroczy 5 minut, możemy po prostu chcieć zsynchronizować pliki bazy danych w całości.

Poniżej przedstawiono najczęstsze przełączniki z rsync -

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

Przełącznik Akcja
-za Tryb archiwizacji i zakłada -r, -p, -t, -g, -l
-re Synchronizuj tylko drzewo katalogów, bez plików
-r Rekursywnie do katalogu
-l Kopiuj linki symboliczne jako dowiązania symboliczne
-p Zachowaj uprawnienia
-sol Zachowaj grupę
-v Gadatliwe wyjście
-z Kompresuj przez łącze sieciowe
-X Zachowaj rozszerzone atrybuty
-ZA Zachowaj listy ACL
-t Zachowaj sygnatury czasowe
-W Przesyłaj cały plik, a nie bloki przyrostowe
-u Nie nadpisuj plików w miejscu docelowym
--postęp Pokaż postęp transferu
--usunąć Usuń starsze pliki w miejscu docelowym
- maksymalny rozmiar = XXX Maksymalny rozmiar pliku do synchronizacji

Kiedy używać rsync

Moje osobiste preferencje dotyczące rsync dotyczą tworzenia kopii zapasowych plików z hosta źródłowego na hosta docelowego. Na przykład wszystkie katalogi domowe do odzyskiwania danych lub nawet poza siedzibą firmy i do chmury w celu przywrócenia danych po awarii.

Lokalna kopia zapasowa z rsync

Widzieliśmy już, jak przesyłać pliki z jednego hosta do drugiego. Tej samej metody można użyć do synchronizacji katalogów i plików lokalnie.

Zróbmy ręczną przyrostową kopię zapasową / etc / w naszym katalogu root użytkownika.

Najpierw musimy utworzyć katalog poza ~ / root dla zsynchronizowanej kopii zapasowej -

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

Następnie upewnij się, że jest wystarczająco dużo wolnego miejsca na dysku.

[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%         /

Jesteśmy dobrzy do synchronizacji całego naszego katalogu / etc / -

rsync -aAvr /etc/ /root/etc_baks/

Nasz zsynchronizowany katalog / 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 }--

Teraz zróbmy przyrostową 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]#

Skopiowano tylko nasz plik test_incremental.txt .

Zdalne kopie różnicowe z rsync

Zróbmy naszą początkową pełną kopię zapasową rsync na serwerze z wdrożonym planem tworzenia kopii zapasowych. Ten przykład w rzeczywistości tworzy kopię zapasową folderu na stacji roboczej Mac OS X na serwerze CentOS. Kolejnym wspaniałym aspektem rsync jest to, że można go używać na dowolnej platformie, na którą rsync został przeniesiony.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'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$

Utworzyliśmy teraz kopię zapasową folderu ze stacji roboczej na serwerze z woluminem RAID6 z rotowanym nośnikiem odzyskiwania po awarii przechowywanym poza siedzibą firmy. Użycie rsync dało nam standardowe kopie zapasowe 3-2-1 z tylko jednym serwerem posiadającym kosztowną nadmiarową macierz dyskową i rotowane kopie różnicowe.

Teraz zróbmy kolejną kopię zapasową tego samego folderu przy użyciu rsync po dodaniu pojedynczego nowego pliku o nazwie test_file.txt .

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff 
[email protected]'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$

Jak widać, tylko nowy plik został dostarczony na serwer przez rsync . Porównanie różnicowe zostało przeprowadzone dla każdego pliku.

Kilka rzeczy, na które należy zwrócić uwagę: Kopiuje tylko nowy plik: test_file.txt, ponieważ był to jedyny plik ze zmianami. rsync używa ssh. Nigdy nie musieliśmy używać naszego konta roota na żadnej z maszyn.

Prosty, wydajny i skuteczny rsync doskonale nadaje się do tworzenia kopii zapasowych całych folderów i struktur katalogów. Jednak samo rsync nie automatyzuje tego procesu. Tutaj musimy zagłębić się w naszą skrzynkę narzędziową i znaleźć najlepsze, małe i proste narzędzie do tego zadania.

Aby zautomatyzować tworzenie kopii zapasowych rsync za pomocą cronjobs , konieczne jest skonfigurowanie użytkowników SSH przy użyciu kluczy SSH do uwierzytelniania. To w połączeniu z cronjobs umożliwia automatyczne wykonywanie rsync w określonych odstępach czasu.

Użyj DD dla obrazów odzyskiwania metalu po jednym bloku

DD to narzędzie Linuksa, które istnieje od zarania jądra Linuksa w połączeniu z narzędziami GNU.

dd najprościej kopiuje obraz wybranego obszaru dysku. Następnie zapewnia możliwość kopiowania wybranych bloków dysku fizycznego. Więc jeśli nie masz kopii zapasowych, gdy dd zapisze na dysku, wszystkie bloki zostaną zastąpione. Utrata poprzednich danych przekracza możliwości odzyskiwania nawet w przypadku drogiego, profesjonalnego odzyskiwania danych.

Cały proces tworzenia bootowalnego obrazu systemu za pomocą dd jest następujący -

  • Uruchom z serwera CentOS z bootowalną dystrybucją Linuksa
  • Znajdź oznaczenie dysku startowego, który ma zostać utworzony
  • Wybierz lokalizację, w której będzie przechowywany obraz odzyskiwania
  • Znajdź rozmiar bloku używany na dysku
  • Rozpocznij operację na obrazie dd

W tym samouczku, ze względu na czas i prostotę, utworzymy obraz ISO głównego rekordu rozruchowego z maszyny wirtualnej CentOS. Będziemy wtedy przechowywać ten obraz poza witryną. W przypadku uszkodzenia MBR i konieczności przywrócenia tego samego procesu można zastosować do całego dysku lub partycji rozruchowej. Jednak w przypadku tego samouczka czas i miejsce na dysku są trochę przesadzone.

Zaleca się, aby administratorzy CentOS byli biegli w przywracaniu w pełni bootowalnego dysku / partycji w środowisku testowym i wykonywaniu przywracania od podstaw. Będzie to wymagało dużej presji, gdy w końcu trzeba będzie ukończyć praktykę w rzeczywistej sytuacji z menedżerami i kilkudziesięcioma użytkownikami końcowymi liczącymi przestoje. W takim przypadku 10 minut zastanawiania się może wydawać się wiecznością i sprawić, że jeden się spoci.

Note- Używając dd, upewnij się, że NIE mylisz woluminów źródłowych i docelowych. Możesz zniszczyć dane i serwery startowe, kopiując lokalizację kopii zapasowej na dysk rozruchowy. Lub, co gorsza, zniszcz dane na zawsze, kopiując dane na bardzo niskim poziomie za pomocą DD.

Poniżej przedstawiono typowe przełączniki i parametry wiersza poleceń dla dd -

Przełącznik Akcja
if = W pliku lub źródle do skopiowania
z = Plik wyjściowy lub kopia pliku w pliku
bs Ustaw rozmiar bloku wejściowego i wyjściowego
obs Ustaw rozmiar bloku pliku wyjściowego
ZJD Ustaw rozmiar bloku pliku wejściowego
liczyć Ustaw liczbę bloków do skopiowania
konw Dodatkowe opcje do dodania do obrazowania
Żaden błąd Nie przerywaj przetwarzania błędu
synchronizacja W przypadku błędu lub niewspółosiowości blokuje niedopasowane bloki wejściowe

Note on block size- Domyślny rozmiar bloku dla dd to 512 bajtów. Był to standardowy rozmiar bloku dysków twardych o niższej gęstości. Dzisiejsze dyski twarde o większej gęstości zostały zwiększone do 4096 bajtów (4kB) bloków, aby umożliwić dyski o pojemności od 1 TB i więcej. Dlatego przed użyciem dd z nowszymi dyskami twardymi o większej pojemności będziemy chcieli sprawdzić rozmiar bloku dysku.

W tym samouczku zamiast pracować na serwerze produkcyjnym z dd , będziemy używać instalacji CentOS działającej w VMWare. Skonfigurujemy również VMWare tak, aby uruchamiał bootowalny obraz ISO systemu Linux zamiast pracować z bootowalną pamięcią USB.

Najpierw musimy pobrać obraz CentOS zatytułowany: CentOS Gnome ISO . To prawie 3 GB i zaleca się, aby zawsze zachować kopię do tworzenia bootowalnych pendrive'ów USB i uruchamiania instalacji serwerów wirtualnych w celu rozwiązywania problemów i obrazów typu bare metal.

Inne bootowalne dystrybucje Linuksa będą działać równie dobrze. Linux Mint może być używany do rozruchowych plików ISO, ponieważ ma świetne wsparcie sprzętowe i dopracowane narzędzia dyskowe GUI do konserwacji.

Obraz startowy CentOS GNOME Live można pobrać z: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Skonfigurujmy naszą instalację VMWare Workstation tak, aby uruchamiała się z naszego obrazu startowego Linux. Kroki dotyczą VMWare w systemie OS X. Są one jednak podobne w przypadku VMWare Workstation w systemie Linux, Windows, a nawet Virtual Box.

Note- Korzystanie z rozwiązania wirtualnego pulpitu, takiego jak Virtual Box lub VMWare Workstation, to świetny sposób na skonfigurowanie scenariuszy laboratoryjnych do nauki zadań administracyjnych CentOS. Daje możliwość zainstalowania kilku instalacji CentOS, praktycznie bez konfiguracji sprzętowej, pozwalając skupić się na administrowaniu, a nawet zapisać stan serwera przed wprowadzeniem zmian.

Najpierw skonfigurujmy wirtualną płytę CD-ROM i dołączmy nasz obraz ISO do rozruchu zamiast instalacji wirtualnego serwera CentOS -

Teraz ustaw dysk startowy -

Teraz po uruchomieniu nasza maszyna wirtualna uruchomi się z rozruchowego obrazu ISO CentOS i umożliwi dostęp do plików na wcześniej skonfigurowanym serwerze Virtual CentOS.

Sprawdźmy nasze dyski, aby zobaczyć, skąd chcemy skopiować MBR (skondensowane dane wyjściowe są następujące).

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

Zlokalizowaliśmy oba nasze dyski fizyczne: sda i sdb . Każdy ma rozmiar bloku 512 bajtów. Tak więc uruchomimy teraz polecenie dd, aby skopiować pierwsze 512 bajtów dla naszego MBR na SDA1.

Najlepszym sposobem na to jest -

[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]#

W ten sposób mamy pełny obraz naszego głównego rekordu rozruchowego. Jeśli mamy wystarczająco dużo miejsca na obrazowanie dysku rozruchowego, równie łatwo możemy utworzyć pełny obraz rozruchowy systemu -

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

Konwersji = synchronizacji jest stosowany, gdy bajty muszą być dostosowane do postaci fizycznej. W takim przypadku dd może otrzymać błąd, jeśli dokładne wyrównanie 4K nie zostanie odczytane (powiedzmy ... plik, który ma tylko 3 KB, ale musi zajmować minimum jeden blok 4K na dysku. Lub po prostu wystąpi błąd podczas odczytu i plik nie może zostać odczytany przez dd.). Zatem dd z conv = sync, noerror wypełni 3K trywialnymi, ale użytecznymi danymi na fizycznym nośniku w wyrównaniu bloków 4K. Nie przedstawiając błędu, który może zakończyć dużą operację.

Podczas pracy z danymi z dysków zawsze chcemy uwzględnić: conv = sync, noerror parameter.

Dzieje się tak po prostu dlatego, że dyski nie są strumieniami, takimi jak dane TCP. Składają się z bloków dopasowanych do określonego rozmiaru. Na przykład, jeśli mamy 512-bajtowe bloki, plik o wielkości zaledwie 300 bajtów nadal potrzebuje pełnych 512 bajtów miejsca na dysku (prawdopodobnie 2 bloki na informacje o i-węzłach, takie jak uprawnienia i inne informacje o systemie plików).

Użyj gzip i tar do bezpiecznego przechowywania

gzip i tar to dwa narzędzia, do których administrator CentOS musi się przyzwyczaić. Są używane do znacznie więcej niż tylko dekompresji archiwów.

Używanie Gnu Tar w CentOS Linux

Tar to narzędzie do archiwizacji podobne do winrar w systemie Windows. Jego nazwa Tape Archive, w skrócie tar, w dużym stopniu podsumowuje to narzędzie. tar weźmie pliki i umieści je w archiwum dla logicznej wygody. Dlatego zamiast dziesiątek plików przechowywanych w / etc. moglibyśmy po prostu „tarować” je w archiwum dla wygody tworzenia kopii zapasowych i przechowywania.

tar był przez wiele lat standardem przechowywania zarchiwizowanych plików w systemach Unix i Linux. Dlatego używanie tar razem z gzip lub bzip jest uważane za najlepszą praktykę dla archiwów w każdym systemie.

Poniżej znajduje się lista typowych przełączników linii poleceń i opcji używanych w tar -

Przełącznik Akcja
-do Tworzy nowe archiwum .tar
-DO Wyodrębnia do innego katalogu
-jot Używa kompresji bzip2
-z Używa kompresji gzip
-v Informacje szczegółowe pokazują postęp archiwizacji
-t Wyświetla zawartość archiwum
-fa Nazwa pliku archiwum
-x Rozpakowuje archiwum tar

Poniżej przedstawiono podstawową składnię tworzenia archiwum tar .

tar -cvf [tar archive name]

Note on Compression mechanisms with tar- Zaleca się trzymanie się jednego z dwóch popularnych schematów kompresji podczas używania tar: gzip i bzip2. Pliki gzip zużywają mniej zasobów procesora, ale zwykle mają większy rozmiar. Chociaż kompresja bzip2 zajmie więcej czasu, zużywa więcej zasobów procesora; ale spowoduje to mniejszy rozmiar pliku końcowego.

Korzystając z kompresji plików, zawsze będziemy chcieli używać standardowych rozszerzeń plików, aby wszyscy, łącznie z nami, wiedzieli (w przeciwieństwie do prób i błędów), jaki schemat kompresji jest potrzebny do wyodrębnienia archiwów.

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

Gdy zachodzi potrzeba wyodrębnienia archiwów na komputerze z systemem Windows lub do użytku w systemie Windows, zaleca się użycie rozszerzenia .tar.tbz lub .tar.gz, ponieważ większość trzyznakowych pojedynczych rozszerzeń wprowadzi w błąd tylko administratorów systemu Windows i Windows (jest to jednak czasami pożądany rezultat)

Stwórzmy gzipped archiwum tar od naszych zdalnych kopii zapasowych skopiowany z Mac Workstation -

[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

Note- Zamiast dodawać wszystkie pliki bezpośrednio do archiwum, zarchiwizowaliśmy cały folder RemoteStuff . To najłatwiejsza metoda. Po prostu dlatego, że po rozpakowaniu cały katalog RemoteStuff jest wyodrębniany ze wszystkimi plikami w bieżącym katalogu roboczym jako ./currentWorkingDirectory/RemoteStuff/

Teraz wypakujmy archiwum do katalogu / 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

Jak widać powyżej, wszystkie pliki zostały po prostu rozpakowane do katalogu zawierającego w naszym bieżącym katalogu roboczym.

[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 ~]#

Użyj programu gzip, aby skompresować kopie zapasowe plików

Jak wspomniano wcześniej, możemy użyć bzip2 lub gzip z tar z rozszerzeniem -j lub -zprzełączniki wiersza poleceń. Możemy również użyć programu gzip do kompresji pojedynczych plików. Jednak użycie samego bzip lub gzip nie oferuje tak wielu funkcji, jak w połączeniu z tar .

W przypadku korzystania z programu gzip domyślną akcją jest usunięcie oryginalnych plików, zastępując każdy skompresowaną wersją z dodaniem rozszerzenia .gz.

Niektóre typowe przełączniki wiersza poleceń dla gzip to -

Przełącznik Akcja
-do Zachowuje pliki po umieszczeniu w archiwum
-l Uzyskaj statystyki skompresowanego archiwum
-r Rekurencyjnie kompresuje pliki w katalogach
Od -1 do 9 Określa poziom kompresji w skali od 1 do 9

gzip działa mniej więcej na podstawie pliku po pliku, a nie na zasadzie archiwizacji, jak niektóre narzędzia zip systemu Windows. Głównym tego powodem jest to, że tar już zapewnia zaawansowane funkcje archiwizacji. gzip został zaprojektowany, aby zapewnić tylko mechanizm kompresji.

Dlatego myśląc o gzip , pomyśl o pojedynczym pliku. Myśląc o wielu plikach, pomyśl o archiwach tar . Zbadajmy teraz to w naszym poprzednim archiwum tar .

Note - Doświadczeni specjaliści od Linuksa często nazywają archiwum tarowane jako archiwum.

Zróbmy kolejne archiwum tar z naszej kopii zapasowej rsync .

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

Dla celów demonstracyjnych, spakujmy nowo utworzone archiwum archiwum gzipem i powiedz programowi gzip, aby zachował stary plik. Domyślnie, bez opcji -c , gzip zamieni całe archiwum tar na plik .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.

Spróbujmy przetestować przełącznik -l za pomocą programu gzip .

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

Aby pokazać, czym różni się gzip od Windows Zip Utilities, uruchommy gzip na folderze z plikami tekstowymi.

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

Teraz użyjmy opcji -r, aby rekurencyjnie skompresować wszystkie pliki tekstowe w katalogu.

[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]#

Widzieć? Nie to, czego niektórzy mogli się spodziewać. Wszystkie oryginalne pliki tekstowe zostały usunięte i każdy został skompresowany indywidualnie. Z powodu tego zachowania najlepiej jest myśleć o samym programie gzip , gdy trzeba pracować na pojedynczych plikach.

Praca z tarballs , niech wyodrębnić nasze rsynced archiwum do nowego katalogu.

[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

Jak widać powyżej, wyodrębniliśmy i zdekompresowaliśmy nasze tarball do katalogu / tmp.

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

Szyfruj archiwa TarBall

Szyfrowanie archiwów tarballa do przechowywania bezpiecznych dokumentów, do których może być potrzebny dostęp innym pracownikom organizacji w przypadku odtwarzania po awarii, może być trudnym pomysłem. Zasadniczo można to zrobić na trzy sposoby: albo użyj GnuPG, albo użyj openssl, albo użyj narzędzia trzeciej części.

GnuPG jest przeznaczony głównie do szyfrowania asymetrycznego i ma na myśli skojarzenie z tożsamością, a nie hasło. To prawda, że ​​można go używać z szyfrowaniem symetrycznym, ale nie jest to główna siła GnuPG. Dlatego zdyskontowałbym GnuPG za przechowywanie archiwów z fizycznym zabezpieczeniem, gdy więcej osób niż pierwotna osoba może potrzebować dostępu (na przykład menedżer korporacji, który chce chronić się przed administratorem posiadającym wszystkie klucze do królestwa jako dźwignię).

Openssl, podobnie jak GnuPG, może robić, co chcemy i jest dostarczany z CentOS. Ale znowu, nie jest specjalnie zaprojektowany do robienia tego, co chcemy, a szyfrowanie zostało zakwestionowane w społeczności bezpieczeństwa.

Naszym wyborem jest narzędzie o nazwie 7zip. 7zip to narzędzie do kompresji, takie jak gzip, ale z wieloma innymi funkcjami. Podobnie jak Gnu Gzip, 7zip i jego standardy są w społeczności open source. Musimy tylko zainstalować 7zip z naszego repozytorium EHEL (w następnym rozdziale szczegółowo omówimy instalację rozszerzonych repozytoriów korporacyjnych).

Zainstaluj 7zip na Centos

7zip to prosta instalacja po załadowaniu i skonfigurowaniu naszych repozytoriów EHEL w 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

To proste, 7zip jest zainstalowany i gotowy do użycia z 256-bitowym szyfrowaniem AES dla naszych archiwów tarball.

Teraz użyjmy 7z do zaszyfrowania naszego archiwum gzip za pomocą hasła. Składnia służąca do tego jest dość prosta -

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

Gdzie, a: dodaj do archiwum i -p: szyfruj i pytaj o hasło

[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]#

Teraz mamy nasze archiwum .7z, które szyfruje zgzipowane tarball za pomocą 256-bitowego AES.

Note- 7zip używa 256-bitowego szyfrowania AES z hashem SHA-256 hasła i licznika, powtarzanym do 512K razy w celu wyprowadzenia klucza. Powinno to być wystarczająco bezpieczne, jeśli używany jest złożony klucz.

Dalszy proces szyfrowania i ponownej kompresji archiwum może zająć trochę czasu w przypadku większych archiwów.

7zip to zaawansowana oferta z większą liczbą funkcji niż gzip czy bzip2. Jednak nie jest to standardem w CentOS lub w świecie Linuksa. Dlatego inne narzędzia powinny być używane często, jak to możliwe.