サーバーの不慮の事故により保存されていた大事なデータを失う危険性があります。日々の重要なデータはバックアップをこまめに行っておくことが重要です。ここではLinuxマシン内部や外部へ重要データのバックアップを取る方法を紹介します。
本記事の読者層は以下の方を想定しています。
- データのバックアップを自動で取りたい方
サーバー内部でバックアップを取る方法
サーバーの運用においてバックアップは重要な作業です。操作ミス、不正アクセス、コンピューターウィルスにより、データの変更やデーターの改善、意図せぬ削除がおこることもあります。このような不慮の事故により大切なデータがなくなってしまう場合もあるため、バックアップ対策は常に考えておきます。
サーバー内部のデータを保存する方法として、tarコマンドを使用する方法が一般的です。
以下で
- 任意のフォルダ内のすべてのファイルを圧縮
- 圧縮したファイルをフォルダとして解凍
する方法を紹介します。
tarコマンドでバックアップを取る方法
■パーミッション保持したまま圧縮
パミッションを保持したままアーカイブファイルを作成するには、以下のコマンドを利用します。
tar cvzfp xxxxx.tar.gz ディレクトリ名
tar cvzfp example.tar.gz examplefolder
tarの後のオプションは、それぞれ以下のような意味を持ちます。
- 「z」gzip方式の圧縮または展開を同時に行う
- 「c」新しくアーカイブファイルを作成する
- 「v」圧縮・展開するファイル名を表示する
- 「f」アーカイブファイル名を指定する
- 「p」パーミッション保持したまま圧縮/解凍する
- 「x」アーカイブファイルを展開する
■ パーミッション保持したまま解凍
上記のディレクトリ構造とパミッションをそのままにファイルを解凍するには、以下のコマンドを利用します。
tar xvzfp xxxxx.tar.gz
tar xvzfp example.tar.gz
RSYNCコマンドでバックアップを取る方法
Rsyncコマンドを利用してバックアップを取る方法を紹介します。
ホームディレクトリ上の「dir」フォルダ構造をすべてをバックアップ用に/media/disk/backup/に保存する方法は下記のコマンドを利用します。(このとき「dir」の後のバックスラッシュがある場合には、ディレクトリをコピーしないようにできます。)
$ rsync -av ~/dir /media/disk/backup/
sending incremental file list
./
****.***
sent 136 bytes received 38 bytes 348.00 bytes/sec
total size is 16 speedup is 0.09
外部サーバーへバックアップを取る方法
ssh
と連携して tar
でバックアップを取る
下記コマンドでSSH接続を利用して現在のサーバーのカレントディレクトリ内にある「samplefolder」からサーバー「example.net」の/tmpフォルダへ「samplefolder」をコピーします。
% tar zcfp - samplefolder | (ssh user@example.net tar zxfp - -C /tmp)
このコマンドを使用してリモートマシン上にアーカイブを作成した後、ネットワーク経由でデータを 別の サーバーへ送ることが出来できます。送り先でフォルダを再展開しているため、転送速度が早くなるメリットがあります。
以下のパスワードフリーによる2拠点間のSSH接続が出来ていればこれらのサーバー間のバックアップはよりスムーズに行えいます。
以上により、定期的にバックアップを行うタスクを作っておけば、必要なファイル・フォルダを安全な別のサーバーへ送ることが出来るようになります。
まとめ
サーバーバックアップ方法について解説しました。
- サーバーのバックアップ方法は、サーバー内部でのバックアップ法と外部でのバックアップ法があります。
- 外部へバックアップした方が安全で、SSH暗号化通信を用いTarと連携してバックアップを取ることが推奨されます。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント