Linux管理者-バックアップとリカバリ

標準のバックアップ計画を展開するためのCentOSに固有の方法を検討する前に、まず、標準レベルのバックアップポリシーの一般的な考慮事項について説明します。私たちが最初に慣れたいのは3-2-1 backup rule

3-2-1バックアップ戦略

業界全体で、3-2-1バックアップモデルという用語をよく耳にします。これは、バックアップ計画を実装するときに生きるための非常に優れたアプローチです。3-2-1は次のように定義されます。3データのコピー; たとえば、作業コピーがある場合があります。rsyncを使用して冗長性を確保するように設計されたCentOSサーバーに配置されたコピー。ローテーションされたオフサイトUSBバックアップは、バックアップサーバー上のデータから作成されます。2さまざまなバックアップメディア。この場合、実際には3つの異なるバックアップメディアがあります。ラップトップまたはワークステーションのSSD上の作業コピー、RADI6アレイ上のCentOSサーバーデータ、およびUSBドライブに配置されたオフサイトバックアップです。1オフサイトでのデータのコピー。USBドライブを毎晩オフサイトでローテーションしています。もう1つの最新のアプローチは、クラウドバックアッププロバイダーです。

システムの回復

ベアメタル計画を復元するには、単にそのまま全てのデータをオンラインに不可欠なシステムを取得するためにCentOSの管理者がレイアウトされた計画です。100%のシステム障害と過去のすべてのシステムハードウェアの損失を想定すると、管理者は、最小限のダウンタイムで、完全なユーザーデータでアップタイムを達成する計画を立てる必要があります。Linuxで使用されるモノリシックカーネルは、実際には、Windowsよりもシステムイメージを使用したベアメタル復元をはるかに簡単にします。Windowsがマイクロカーネルアーキテクチャを使用している場合。

完全なデータ復元とベアメタル回復は通常、主要な運用サーバーの動作中の構成済み実稼働ディスクイメージ、3-2-1ルールに準拠したユーザーデータの冗長バックアップなどの方法を組み合わせて実行されます。信頼できる会社の担当者へのアクセスが制限された、安全で耐火性の金庫に保管されている可能性のある一部の機密ファイルですら。

ネイティブCentOSツールを使用したマルチフェーズベアメタル復元およびデータリカバリ計画は、次のもので構成されます。

  • 構成済みサーバーの実稼働ディスクイメージを作成および復元するためのdd

  • すべてのユーザーデータの増分バックアップを作成するrsync

  • 管理者からのパスワードとメモを含むファイルの暗号化されたバックアップを保存するためのtarとgzip。通常、これはUSBドライブに配置し、暗号化して、上級管理職がアクセスできる金庫にロックすることができます。また、これにより、現在の管理者が宝くじに当選し、どこかの日当たりの良い島に姿を消した場合に、他の誰かが重要なセキュリティ資格情報を知ることができます。

ハードウェア障害または災害が原因でシステムがクラッシュした場合、以下は操作の復元のさまざまなフェーズになります-

  • 構成済みのベアメタルイメージを使用して稼働中のサーバーを構築する

  • バックアップから作業サーバーにデータを復元する

  • 最初の2つの操作を実行するために必要な資格情報に物理的にアクセスできる

ファイルレベルのバックアップにrsyncを使用する

rsyncは、ファイルのディレクトリをローカルまたは別のサーバーに同期するための優れたユーティリティです。rsyncはシステム管理者によって何年も使用されてきたため、データをバックアップする目的で非常に洗練されています。著者の意見では、同期の最も優れた機能の1つは、コマンドラインからスクリプトを作成できることです。

このチュートリアルでは、rsyncについてさまざまな方法で説明します-

  • いくつかの一般的なオプションを調べて話し合う
  • ローカルバックアップを作成する
  • SSH経由でリモートバックアップを作成する
  • ローカルバックアップを復元する

rsyncはその目的にちなんで名付けられました:リモート同期であり、強力で柔軟に使用できます。

以下は、sshを介した基本的なrsyncリモートバックアップです。

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$

次の同期により、LANを介して約2.3GBのデータが送信されました。rsyncの利点は、ファイルごとにブロックレベルで段階的に機能することです。つまり、1MBのテキストファイルで2文字だけを変更すると、次の同期で1つまたは2つのブロックだけがLANを介して転送されます。

さらに、増分機能を無効にして、CPU使用率を下げるために使用されるネットワーク帯域幅を増やすことができます。これは、1Gb専用のバックアップLANで10分ごとに複数の10MBデータベースファイルを絶えずコピーする場合に推奨される場合があります。理由は次のとおりです。これらは常に変化し、10分ごとに段階的に送信され、リモートCPUの負荷に負担がかかる可能性があります。転送の合計負荷は5分を超えないため、データベースファイル全体を同期したい場合があります。

以下は、最も一般的なスイッチですrsyncを-

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

スイッチ アクション
-a アーカイブモードで、-r、-p、-t、-g、-lを想定しています
-d ディレクトリツリーのみを同期し、ファイルは同期しません
-r ディレクトリへの再帰
-l シンボリックリンクをシンボリックリンクとしてコピーする
-p 権限を保持する
-g グループを保存
-v 冗長出力
-z ネットワークリンクを介して圧縮
-バツ 拡張属性を保持する
-A ACLを保持する
-t タイムスタンプを保持する
-W インクリメンタルブロックではなく、ファイル全体を転送する
-u ターゲット上のファイルを上書きしないでください
- 進捗 転送の進行状況を表示する
-削除 ターゲット上の古いファイルを削除します
-最大サイズ= XXX 同期する最大ファイルサイズ

いつrsyncを使用するか

私の個人的なrsyncの好みは、ソースホストからターゲットホストにファイルをバックアップするときです。たとえば、データリカバリ用のすべてのホームディレクトリ、またはディザスタリカバリ用のオフサイトおよびクラウドへのディレクトリ。

rsyncを使用したローカルバックアップ

あるホストから別のホストにファイルを転送する方法はすでに見てきました。同じ方法を使用して、ディレクトリとファイルをローカルで同期できます。

rootユーザーのディレクトリに/ 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 OSXワークステーション上のフォルダをCentOSサーバーにバックアップしています。rsyncのもう1つの優れた点は、rsyncが移植されたすべてのプラットフォームで使用できることです。

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$

これで、ワークステーションから、ローテーションされたディザスタリカバリメディアがオフサイトに保存されたRAID6ボリュームを実行しているサーバーにフォルダがバックアップされました。rsyncを使用すると、標準の3-2-1バックアップが提供され、1台のサーバーだけに高価な冗長ディスクアレイとローテーション差分バックアップがあります。

次に、test_file.txtという名前の新しいファイルが1つ追加された後、rsyncを使用して同じフォルダーの別のバックアップを実行しましょう。

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$

ご覧のとおり、新しいファイルのみがrsyncを介してサーバーに配信されました。差分比較は、ファイルごとに行われました。

注意すべき点は次のとおりです。変更が加えられた唯一のファイルであるため、これは新しいファイルtest_file.txtのみをコピーします。rsyncはsshを使用します。どちらのマシンでもrootアカウントを使用する必要はありませんでした。

シンプルで強力かつ効果的なrsyncは、フォルダー全体とディレクトリ構造をバックアップするのに最適です。ただし、rsync自体はプロセスを自動化しません。ここで、ツールボックスを掘り下げて、その仕事に最適で小さくてシンプルなツールを見つける必要があります。

cronjobsを使用してrsyncバックアップを自動化するには、認証にSSHキーを使用してSSHユーザーを設定することが不可欠です。これをcronjobsと組み合わせると、rsyncを一定の間隔で自動的に実行できます。

ブロックごとのベアメタル回復画像にDDを使用する

DDは、LinuxカーネルがGNUユーティリティに出会うことの黎明期から存在しているLinuxユーティリティです。

ddは、簡単に言うと、選択したディスク領域のイメージをコピーします。次に、物理ディスクの選択したブロックをコピーする機能を提供します。したがって、バックアップがない限り、ddがディスクに書き込むと、すべてのブロックが置き換えられます。以前のデータの損失は、高額な専門家レベルのデータ復旧でさえも復旧機能を超えています。

ddを使用して起動可能なシステムイメージを作成するプロセス全体は次のとおりです。

  • 起動可能なLinuxディストリビューションを使用してCentOSサーバーから起動する
  • イメージ化するブータブルディスクの指定を見つけます
  • リカバリイメージを保存する場所を決定します
  • ディスクで使用されているブロックサイズを見つけます
  • ddイメージ操作を開始します

このチュートリアルでは、時間と単純さのために、CentOS仮想マシンからマスターブートレコードのISOイメージを作成します。その後、この画像をオフサイトに保存します。MBRが破損して復元する必要がある場合は、同じプロセスをブータブルディスクまたはパーティション全体に適用できます。ただし、必要な時間とディスク容量は、このチュートリアルでは実際には少しやり過ぎです。

CentOS管理者は、テスト環境で完全に起動可能なディスク/パーティションを復元し、ベアメタル復元を実行することに習熟することをお勧めします。これにより、マネージャーと数十人のエンドユーザーがダウンタイムをカウントする実際の状況で最終的に練習を完了する必要がある場合に、多くのプレッシャーが軽減されます。そのような場合、物事を理解するための10分間は永遠のように見え、1つの汗をかきます。

Note− ddを使用するときは、ソースボリュームとターゲットボリュームを混同しないように注意してください。バックアップの場所をブートドライブにコピーすることで、データとブート可能なサーバーを破棄できます。または、DDを使用して非常に低いレベルでデータをコピーすることにより、データを永久に破壊する可能性があります。

以下は、dd −の一般的なコマンドラインスイッチとパラメータです。

スイッチ アクション
if = コピーするファイルまたはソース内
of = アウトファイルまたはインファイルのコピー
bs 入力ブロックサイズと出力ブロックサイズの両方を設定します
obs 出力ファイルのブロックサイズを設定する
IBS 入力ファイルのブロックサイズを設定する
カウント コピーするブロック数を設定する
コンバージョン イメージング用に追加する追加オプション
Noerror エラーの処理を停止しないでください
同期 エラーまたはミスアライメントが発生した場合に、適合していない入力ブロックをパッドします

Note on block size−ddのデフォルトのブロックサイズは512バイトです。これは、低密度ハードディスクドライブの標準ブロックサイズでした。今日の高密度HDDは、1TB以上の範囲のディスクに対応できるように、4096バイト(4kB)のブロックサイズに拡大されています。したがって、新しい大容量のハードディスクでddを使用する前に、ディスクのブロックサイズを確認する必要があります。

このチュートリアルでは、ddを使用して本番サーバーで作業する代わりに、VMWareで実行されているCentOSインストールを使用します。また、起動可能なUSBスティックを使用する代わりに、起動可能なLinuxISOイメージを起動するようにVMWareを構成します。

まず、CentOS GnomeISOというタイトルのCentOSイメージをダウンロードする必要があります。これはほぼ3GBであり、起動可能なUSBサムドライブを作成し、トラブルシューティングやベアメタルイメージのために仮想サーバーインストールで起動するために、常にコピーを保持することをお勧めします。

他の起動可能なLinuxディストリビューションも同様に機能します。Linux Mintは、優れたハードウェアサポートと、メンテナンス用の洗練されたGUIディスクツールを備えているため、起動可能なISOに使用できます。

CentOS GNOME Liveブータブルイメージは、次の場所からダウンロードできます。 http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Linuxのブート可能イメージから起動するようにVMWareWorkstationのインストールを構成しましょう。手順はOSX上のVMWare向けです。ただし、Linux、Windows、さらにはVirtualBox上のVMWareWorkstationでも同様です。

Note− VirtualBoxやVMWareWorkstationなどの仮想デスクトップソリューションを使用することは、CentOS管理タスクを学習するためのラボシナリオを設定するための優れた方法です。複数のCentOSインストールをインストールする機能を提供します。ハードウェア構成を実質的に使用しないため、管理に集中でき、変更を加える前にサーバーの状態を保存することもできます。

まず、仮想CD-ROMを構成し、仮想CentOSサーバーのインストールの代わりに起動するISOイメージを添付しましょう-

ここで、起動ディスクを設定します-

これで、起動時に、仮想マシンがCentOSブータブルISOイメージから起動し、以前に構成されたVirtualCentOSサーバー上のファイルにアクセスできるようになります。

ディスクをチェックして、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

物理ディスクの両方(sdasdb)を見つけました。それぞれのブロックサイズは512バイトです。したがって、ddコマンドを実行して、SDA1のMBRの最初の512バイトをコピーします。

これを行うための最良の方法は-

[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 =同期はバイトは、物理媒体のために整列されなければならない場合に使用されます。この場合、正確な4Kアライメントが読み取られないと、ddでエラーが発生する可能性があります(たとえば、3Kしかないが、ディスク上で4Kブロックを1つ以上取得する必要があるファイル。または、読み取りエラーが発生し、 ddでファイルを読み取ることはできません。)したがって、conv = sync、noerrorを指定したddは、3Kに些細な、しかし有用なデータを4Kブロックアライメントの物理メディアにパディングします。大規模な操作を終了する可能性のあるエラーは表示されませんが。

ディスクからのデータを操作するときは、常に次のものを含めます:conv = sync、noerrorパラメーター。

これは、ディスクがTCPデータのようなストリームではないためです。それらは、特定のサイズに整列されたブロックで構成されています。たとえば、512バイトのブロックがある場合でも、300バイトしかないファイルには512バイトのディスクスペースが必要です(アクセス許可やその他のファイルシステム情報などのiノード情報用に2ブロックの場合があります)。

安全な保管のためにgzipとtarを使用する

gzipとtarは、CentOS管理者が使い慣れなければならない2つのユーティリティです。これらは、単にアーカイブを解凍する以外にも多くの目的で使用されます。

CentOSLinuxでのGnuTarの使用

Tarは、Windowsのwinrarに似たアーカイブユーティリティです。tarと略されるその名前TapeArchiveは、ユーティリティをほぼ要約しています。tarはファイルを取得し、論理的な便宜のためにアーカイブに配置します。したがって、/ etcに保存されている数十のファイルの代わりに。バックアップとストレージの利便性のために、それらをアーカイブに「タール」することができます。

tarは、アーカイブされたファイルをUnixおよびLinuxに保存するための標準として長年使用されてきました。したがって、tarをgzipまたはbzipと一緒に使用することは、各システムのアーカイブのベストプラクティスと見なされます。

以下は、tar-で使用される一般的なコマンドラインスイッチとオプションのリストです。

スイッチ アクション
-c 新しい.tarアーカイブを作成します
-C 別のディレクトリに抽出します
-j bzip2圧縮を使用
-z gzip圧縮を使用
-v 詳細なショーのアーカイブの進行状況
-t アーカイブの内容を一覧表示します
-f アーカイブのファイル名
-バツ tarアーカイブを抽出します

以下は、tarアーカイブを作成するための基本的な構文です。

tar -cvf [tar archive name]

Note on Compression mechanisms with tar− tarを使用するときは、gzipとbzip2の2つの一般的な圧縮スキームのいずれかを使用することをお勧めします。gzipファイルはCPUリソースをあまり消費しませんが、通常はサイズが大きくなります。bzip2は圧縮に時間がかかりますが、より多くのCPUリソースを使用します。ただし、最終ファイルサイズは小さくなります。

ファイル圧縮を使用する場合、アーカイブを抽出するために必要な圧縮スキームを(試行錯誤ではなく)自分自身を含むすべての人に知らせる標準のファイル拡張子を常に使用する必要があります。

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

WindowsボックスまたはWindowsで使用するためにアーカイブを抽出する必要がある場合は、.tar.tbzまたは.tar.gzを使用することをお勧めします。これは、ほとんどの3文字の単一拡張子がWindowsとWindowsのみの管理者を混乱させるためです(ただし、時には望ましい結果)

Macワークステーションからコピーしたリモートバックアップからgzip圧縮されたtarアーカイブを作成しましょう-

[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−すべてのファイルをアーカイブに直接追加する代わりに、RemoteStuffフォルダー全体をアーカイブしました。これが最も簡単な方法です。抽出されると、ディレクトリ全体RemoteStuffが抽出され、現在の作業ディレクトリ内のすべてのファイルが./currentWorkingDirectory/RemoteStuff/として抽出されます。

次に、/ root /ホームディレクトリ内のアーカイブを抽出しましょう。

[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を使用してファイルバックアップを圧縮する

前述のように、tarからbzip2またはgzipのいずれかを使用できます。 -j または -zコマンドラインスイッチ。gzipを使用して個々のファイルを圧縮することもできます。ただし、bzipまたはgzipを単独で使用しても、tarと組み合わせた場合ほど多くの機能は提供されません。

gzipを使用する場合、デフォルトのアクションは元のファイルを削除し、それぞれを圧縮バージョンに置き換えて.gz拡張子を追加することです。

gzipの一般的なコマンドラインスイッチは次のとおりです。

スイッチ アクション
-c アーカイブに配置した後、ファイルを保持します
-l 圧縮アーカイブの統計を取得する
-r ディレクトリ内のファイルを再帰的に圧縮します
-1から9 1から9のスケールで圧縮レベルを指定します

gzipは、一部のWindows O / S zipユーティリティのようにアーカイブベースではなく、ファイルごとに機能します。これの主な理由は、tarがすでに高度なアーカイブ機能を提供していることです。gzipは、圧縮メカニズムのみを提供するように設計されています。

したがって、gzipについて考えるときは、単一​​のファイルについて考えてください。複数のファイルについて考えるときは、tarアーカイブについて考えてください。以前のtarアーカイブでこれを調べてみましょう。

Note −経験豊富なLinuxの専門家は、tarを使用したアーカイブをtarballと呼ぶことがよくあります。

rsyncバックアップから別のtarアーカイブを作成しましょう。

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

デモの目的のために、のは、聞かせてgzipで圧縮新しく作成されたtarballを、と言う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.

gzipで-lスイッチをテストしてみましょう。

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

gzipWindowsZipユーティリティとどのように異なるかを示すために、テキストファイルのフォルダで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のみを考えるのが最善です。

作業tarボール、私たちの解凍せrsynced新しいディレクトリにtarballを。

[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

上記のように、tarballを抽出して/ tmpディレクトリに解凍しました。

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

TarBallアーカイブを暗号化する

災害復旧の場合に、組織の他の従業員がアクセスする必要がある可能性のある安全なドキュメントを保存するためにtarballアーカイブを暗号化することは、難しい概念になる可能性があります。これを行うには、基本的に3つの方法があります。GnuPGを使用するか、opensslを使用するか、サードパーティのユーティリティを使用します。

GnuPGは主に非対称暗号化用に設計されており、パスフレーズではなくIDの関連付けを念頭に置いています。確かに、対称暗号化で使用できますが、これはGnuPGの主な強みではありません。したがって、元の人よりも多くの人がアクセスする必要がある場合(たとえば、管理者が王国のすべての鍵を活用することから保護したい場合など)、物理的なセキュリティでアーカイブを保存するためにGnuPGを割引します。

GnuPGのようなOpensslは、私たちが望むことを実行でき、CentOSに同梱されています。しかし、繰り返しになりますが、私たちが望むことを実行するように特別に設計されているわけではなく、暗号化はセキュリティコミュニティで疑問視されています。

私たちの選択はと呼ばれるユーティリティです 7zip。7zipはgzipのような圧縮ユーティリティですが、さらに多くの機能を備えています。Gnu Gzipと同様に、7zipとその標準はオープンソースコミュニティにあります。EHELリポジトリから7zipをインストールする必要があります(次の章では、拡張エンタープライズリポジトリのインストールについて詳しく説明します)。

Centosに7zipをインストールする

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がインストールされ、tarballアーカイブの256ビットAES暗号化ですぐに使用できます。

次に、7zを使用して、gzip圧縮されたアーカイブをパスワードで暗号化します。そのための構文は非常に単純です-

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

どこ、 a: アーカイブに追加し、 -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]#

これで、gzip圧縮されたtarballを256ビットAESで暗号化する.7zアーカイブができました。

Note− 7zipは、パスワードとカウンターのSHA-256ハッシュを使用したAES 256ビット暗号化を使用し、キーの導出のために最大512K回繰り返されます。複雑なキーを使用する場合、これは十分に安全である必要があります。

アーカイブをさらに暗号化および再圧縮するプロセスは、アーカイブが大きくなると時間がかかる場合があります。

7zipは、gzipやbzip2よりも多くの機能を備えた高度な製品です。ただし、CentOSやLinuxの世界では標準ではありません。したがって、他のユーティリティをできるだけ頻繁に使用する必要があります。