【鯖】バックアップ戯言@Ubuntu Server20.04

プライベートbackup,DVD,linux,ssl

image

ふっとLinuxサーバ(Ubuntu Server20.04.1LTS)においてバックアップ周りを触る事があっての備忘録です。

Linuxたまにしか触らないので、まず確実に忘却の彼方に飛んでいってしまうのですよ。

(;^ω^)

Windowsで動作するWSL2(Ubuntuそのもの)にて、動作を確認。

ターッを調査

バックアップなので、まずはTar(ファイルまとめ上げ)について。

ワンファイルに纏め上げる他、圧縮も可能で、3種類あるようです。ZIP/BZ2/7Z、右に行くほど圧縮率は上がる。

んで、950MBのISOファイル(バイナリ)を対象に簡単に調べてみた。

BZ2    914MB > 893MB 4min
ZIP    914MB > 891MB 1min

※WSL2上、AMD Ryzen3600、SSD(Nvme)

対バイナリだと圧縮率はほぼ大差ないようで、処理時間を見ても、明らかに往年のZIPが優秀に見えます。HDDだと、もっと遅いでしょう。

111バイトの全角半角を含むテキストで調査

いずれも、234バイト辺りで、言うほどの差が出なかった。元よりも大きくなってしまってるが、これはTarのヘッダ分が付いちゃうんでしょうね。多分

tar –numeric-owner -cvzpf document.tgz document.txt 1>>bak.log 2>>error.log

※BZ2なら、-cvjpf となる(z→j)

参考記事が星の数程あるが、一応、書き方。

tar –numeric-owner -cvzpf document.tgz document.txt …

太字の部分が出力ファイル、分かり難いがーf への引数という事。

最後に羅列されたファイルやホルダーを、対象に処理するイメージです。

バックアップのつもりなので、パーミッションやユーザーID(UID)も、そのまま変換せず処理する。

念の為の検証

しっかりとTarファイルが生成されたかどうかを検証します。ストレージが部分破損してる可能性だってゼロじゃないので。

tar –compare –file=document.tgz document.txt 1>>bak.log 2>>error.log

エラーがでなければOK。

暗号化して仕上げ

バックアップ後は暗号化して保管しておきたいですよね。

opensslコマンドはあまりに多機能過ぎて・・、調べるのに苦労でした。また、バージョンによって書き方も変わります。

(;´Д`)

こんな形で暗号化できます。今書ける形では、相当強固かと思います。

openssl enc -e -aes256 -iter 2525 -salt -in document.tgz -out document.tgs -pass file:pass.txt 1>>bak.log 2>>error.log

-iterは、ブルーフォート攻撃への対処で復号化時に必要な値、-saltは、乱数調整、-passは、単純なパスワード指定(さらに強固にするなら、鍵を使う)

ファイルサイズは?

ここまでで、111バイトのテキストファイルのサイズがこうなりました。ただの1ファイルですが。

document.txt 111バイト(平文)
document.tgz 234バイト(Tar+ZIP圧縮)
document.tgs 256バイト(+暗号化)※拡張子は適当

元に戻すばやい

もちろん、逆の手順で戻す事になります。

以下では、document1という名前で、testディレクトリに展開してます。

間に、cmpが入ってますが、これでバイナリ検証した名残(バックアップ生成時のものと、展開時のものをバイナリレベルで検証)

openssl enc -d -aes256 -pass file:pass.txt -in document.tgs -out document1.tgz -iter 2525
cmp document.tgz document1.tgz
tar –numeric-owner -xvzpf document.tgz -C test 1>>bak.log 2>>error.log

※-C が、展開先のtestディレクトリを指してる

DVDメディアに分割保管する?

多重バックアップとして、今なら光学メディアになるかと思います。安価だし。

DVDで1層4.5GB、Blurayで1層25GBです。4層あるので、最大でも100GBでしょうか。高いけども。

このサイズを超えてる場合は、分割しなければならない(以下のコードはまだ未検証)

tar -M –tape-length=4580000 -cvjpf bak_p1.tar -f bak_p2.tar -f bak_p3.tar .\backup202012\

4.5GB毎に、ーf で指定されたファイルで生成する。

光学メディアに書き込む際は、以下のコマンドになるようです(こちらも未検証)dvd+rw-toolsが必要。

yum install dvd+rw-tools
growisofs -Z -dvd-compat -overburn -allow-limited-size -speed=8 /mnt/sr0 -R -J bak_p1.tgz

規格が乱立してるので、下手なオプション付けると、他ドライブで読み込み出来なくなるので注意です。ドライブやメディア性能に依存する、サイズも若干少なめの4.5GBとしてる。

増分バックアップ

日常のバックアップだと、増分バックアップ(変化分)なるかと思います。

-g によるsnarファイル指定で自動でやってくれるようです。初回はフルバックアップ。

tar –numeric-owner -g ${_dirpath}/backup.snar -cvzpf ${_dirpath}/inc_${_datenow}_backup.tgz /mnt/sdb/holder 1>> ${_dirpath}/backup_${_datenow}.log 2>> ${_dirpath}/error_${_datenow}.log

${..}なんちゃらの部分は無視してください。あくまでイメージ(SHスクリプトでいう変数値が入る)

最後に細かな事

業務用途での事(セキュリティ)考えると、Tarの処理最中とかファイル覗けたりするんだろうか・・とか(Temp内とか)

暗号化処理するまでの間の短い時間どうするよ、とか。

エラー処理を随時入れ込むつもりだと、なかなかにメンドイ。

Tarで一括で暗号化までやってくれたりしたら便利なんだが。

綺麗なSHスクリプトが書けるようになりたい。

プライベートbackup,DVD,linux,ssl

Posted by nabe