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.