確実なバックアップ。失敗しないために。tarよりもafioコマンド

この記事は約7分で読めます。

Linux(CentOS)系のバックアップは、最近では、イメージバックアップがメインなのか・・・
いまでも、tarやafioを使っています・・・(笑)

なぜ、tar よりも afioか

# tar czvf /tmp/xxx.tar.gz /var/www/html

↑というふうに、tarコマンドで、バックアップをとっていたときに、あるファイルが壊れていたら・・・
# tar xzvf /tmp/xxx.tar.gz

と、解凍する際に、壊れたファイルで、止まってしまいます。

たった1個のファイルのために、多数のファイルが解凍できない・・・。という障害を
何度も苦い経験しました・・・
管理者なら、経験する、「いやな汗」を経験しました・・・(笑)

そこで、afioの出番・・・

afioは、壊れたファイルは、無視して、それ以外のファイルを解凍してくれます。

afio インストール

#ls -al afio-2.5.tgz
-rw-r--r--  1 xxxx xxxx 460800 Feb  2 XX:XX afio-2.5.tgz

# tar xvf afio-2.5.tgz
# cd afio-2.5

# make
# make install
cp afio /usr/local/bin
cp afio.1 /usr/share/man/man1

# /usr/local/bin/afio -h

Usage:  [filename generator] | afio -o [options] archive  : write archive
        afio -i [options] archive  : install archive
        afio -t [options] archive  : list table-of-contents of archive
        afio -r [options] archive  : verify archive against filesystem
Frequently used options:
 General: -v : verbose
          -Z : with -o: gzip files when writing them to the archive,
               with -i/t/r: handle archive written with -Z option
          -5 : abort instead of creating archive incompatible with cpio
 Tape:    -s [volsize]   : size of volume, can have suffix k or m or g
          -b [blocksize] : block size (default is 5120)
          -c [count]     : buffer count blocks between doing I/O
 Install: -n : protect newer files  -k : skip corrupt data at beginning
 Select:  -y [pattern] : only process files matching pattern
          -Y [pattern] : do not process files matching pattern
Version 2.5 dated 21 Dec 2003

afioコマンド

# /usr/bin\find /var/www/html/ |/usr/local/bin/afio -oZ /tmp/www.backup.afz
# ls -al /tmp/www.backup.afz 
-rw-r--r-- 1 root root 13399040  2月  2 XX:XX 2020 /tmp/www.backup.afz

↑/var/www/html 以下のファイルすべてを、/tmp/www.backup.afz
に圧縮します。「Z」は、圧縮オプションです。
# /usr/local/bin/afio -t /tmp/www.backup.afz

↑圧縮されたファイルの中身をチェックしてみます。
var/www/html
var/www/html/wp-signup.php.z
var/www/html/wp-blog-header.php.z
var/www/html/wp-trackback.php.z
var/www/html/wp-includes
var/www/html/wp-includes/class-wp-site-query.php.z
var/www/html/wp-includes/class-wp-user-query.php.z

最後の「z」は、圧縮しているという表示です。

findのオプションとの組み合わせ

afioは、findのオプションと組み合わせると、多彩なバックアップが出来ます。

# /usr/bin/find /var/www/html/ -mtime 2 |/usr/local/bin/afio -oZ /tmp/www.backup.afz

↑2日以内に更新されたファイルをバックアップ
# /usr/bin/find /var/www/html/ -mtime 2 |/bin/egrep -v 'jpg$' |/usr/local/bin/afio -oZ /tmp/www.backup.afz

↑2日以内に更新されたファイルで、かつ、jpgで終わるファイルを除外してバックアップ。

afioファイルの解凍

# afio -ivZ /tmp/www.backup.afz

var/www/html/wp-content/themes/twentyseventeen/assets/js/navigation.js -- uncompressed
var/www/html/wp-content/themes/twentyseventeen/assets/js/html5.js -- uncompressed
var/www/html/wp-content/themes/twentyseventeen/assets/js/customize-controls.js -- uncompressed
var/www/html/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js -- uncompressed
var/www/html/wp-config-sample.php -- uncompressed
var/www/html/license.txt -- uncompressed
afio: 11m+672k+850 bytes read in 0 seconds. The operation was successful.

と解凍が出来ました。(2020/03/20 修正)
# afio -ivZ -y '*.php' /tmp/www.backup.nonecss.afz

↑「-y」オプションで、ファイル名を指定して、目的のものだけを解凍することが出来ます。(2020/03/20 修正)

afioファイルの中身を見てみる

バックアップしたファイル、どんなものがあるか・・・

バックアップした、afioファイル、実際に何が保存されているか・・・
「-t」オプションを指定して、afioファイルの中身をチェックします。

# afio -tvZ xxxxxx.afz 
drwxr-xr-x  1 root     root              Apr  6 10:54:39 2020 etc
-rw-r--r--  1 root     root           93 Apr  6 10:54:03 2020 etc/subuid -- compressed
----------  1 root     root          282 Apr  6 10:54:03 2020 etc/gshadow -- compressed
-rw-r--r--  1 root     root          366 Apr  6 10:54:38 2020 etc/group -- compressed
-rw-r--r--  1 root     root           93 Apr  6 10:54:03 2020 etc/subgid -- compressed
-rw-r--r--  1 root     root          632 Apr  6 10:54:14 2020 etc/passwd -- compressed
----------  1 root     root          620 Apr  6 10:54:03 2020 etc/shadow -- compressed

と、中身を見ることが出来ます。

(2020/04/06 追記)

タイトルとURLをコピーしました