連載
» 2018年04月19日 05時00分 公開

Linux基本コマンドTips(201):【 dump 】コマンド――ext2、ext3、ext4ファイルシステムをバックアップする

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ext2、ext3、ext4ファイルシステムをバックアップする「dump」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はext2、ext3、ext4ファイルシステムをバックアップする「dump」コマンドです。

dumpコマンドとは?

 「dump」は、ext2、ext3、ext4ファイルシステムをバックアップするために、指定した場所にコピーするコマンドです(※1)。バックアップからの復元は「restore」コマンド(連載第202回)を使用します。

 かなり古くから使われているコマンドですが、最新のディストリビューションでもインストールされていないことがあります。CentOSの場合「sudo yum install dump」で、Ubuntuの場合「sudo apt install dump」でインストールできます。

 なお、バックアップに利用できるコマンドとして他に「tar」コマンド(第40回)、「dd」コマンド(第163回)があります。

※1 ファイルの管理方式自体や管理方式にのっとってフォーマットした記憶領域のことを「ファイルシステム」と言う。ext2、ext3、ext4ファイルシステムのいずれも、データを格納するデータ領域と、データ領域を管理するための管理領域を備える。管理領域にはファイルを管理するための「inode」やinodeの個数、どのinodeを使用しているかといった情報を記録した「スーパーブロック」が配置されている。





dumpコマンドの書式

dump [オプション] バックアップ対象

※[ ]は省略可能な引数を示しています。作成先は-fオプションで指定。




dumpの主なオプション

短いオプション 意味
-レベル dumpの「レベル」を数字で指定する。「-1」〜「-9」は増分バックアップの際に使用する(本文参照)。「-0」は対象全てをバックアップする(デフォルト)。
-f ファイル バックアップの出力先(ファイルやデバイスの他、リモートホストのファイルを指定可能)
-e inode バックアップから除外するinodeを指定する。「,」区切りで複数指定可能
-E ファイル バックアップから除外するinodeのリストが書かれたファイルを指定する
-a テープデバイス使用時、テープ長を考慮せずメディアが終了するまで書き込みを続ける(オートサイズ)
-S ダンプに必要なサイズを計算する(ダンプは行わない)
-b サイズ ダンプするブロックサイズをKB単位で指定する
-z圧縮レベル zlib(gzip)ライブラリによる圧縮レベルを指定する。デフォルトの圧縮レベルは2(※2)
-j圧縮レベル bzlib(bzip2)ライブラリによる圧縮レベルを指定する。デフォルトの圧縮レベルは2(※2)
-y lzoライブラリによる圧縮を行う
-n エラーやテープ交換など応答が必要なメッセージを出力する際、ログインしている全ての端末に送信する
-q エラーやテープ交換などが発生した際に、プロンプトを出さず直ちに処理を中止する
-W ダンプの対象となるファイルシステムを表示する(他のオプションや引数は全て無視する)

※2 -zと-jは圧縮レベルを指定する際に、空白を入れずに指定する必要がある。他のオプションと組み合わせて使いたい場合は「-z -f」や「-z2 -f」のように指定する。



dumpの主なオプション(増分バックアップ関連)

短いオプション 意味
-D パス dumpdatesファイル(dumpコマンドを実行した日付を記録するファイル)のパスを指定。デフォルトは/etc/dumpdatesまたは/var/lib/dumpdates
-u ダンプが成功したら/etc/dumpdatesファイルを更新する。増分バックアップを行う場合は必ず指定する
-T 日付 前回dumpコマンドを実行した日時を指定する(dumpdatesファイルの記録の代わりに使用)
-m 増分バックアップ時の更新の判定を最適化する。ステータスが変更された(changed)ものの、ファイルの内容が更新されていない(not modified)場合は対象としない


ファイルをバックアップする

 「dump -f 作成先 対象」で、対象をバックアップします(画面1)。作成先にはファイルかデバイス(/dev/sda1など)を指定します。ローカルでもリモートでも指定できます。

 対象としてデバイスを指定した場合、デバイスを先にアンマウントしておくことが推奨されています。システムをバックアップしたい場合はシングルユーザーモードで実行します。

 いずれも実行にはroot権限が必要です(第68回)。

コマンド実行例

dump -f 作成ファイル名 対象

(対象をバックアップする)

dump -f /backup/data.dump /data

(/dataディレクトリを「/backup/data.dump」にバックアップする)(画面1


画面1 画面1 dumpコマンドを実行したところ


圧縮しながらバックアップする

 「-y」オプションや「-j」オプション、「-z」オプションを指定すると、圧縮しながらバックアップできます(画面2)。-jと-zの場合、「-j5」のように圧縮レベルを指定できます(どちらもデフォルトの圧縮レベルは2)。

 対象となるデータによって異なりますが、一般に、「-j」オプション(bz2)の方が圧縮率は高くなります。処理時間は「-y」オプション(lzo)の方が短くなります。

コマンド実行例

dump -yf /backup/data.dump.lzo /data

(/dataディレクトリを圧縮してバックアップする)(画面2

dump -j -f /backup/data.dump.bz2 /data

(/dataディレクトリを圧縮してバックアップする)(画面2


画面2 画面2 圧縮しながらバックアップを実行したところ


デバイス名を指定してバックアップする

 「dump -f ファイル名 デバイス名」でデバイスをバックアップします。この場合、デバイス全体がバックアップの対象となります。

 画面3では、「lsblk」コマンド(第180回)でマウントの状況を確認し、「umount」コマンド(第184回)でアンマウントしてから、dumpコマンドを実行しています。

コマンド実行例

dump -f /backup/sdb1.dump /dev/sdb1

(/dev/sdb1を/backup/sdb1.dumpにバックアップする)(画面3


画面3 画面3 デバイス名(/dev/sdb1)を指定してバックアップしたところ


増分バックアップを行う

 dumpコマンドは、「増分バックアップ(インクリメンタルバックアップ)」にも対応しています。増分バックアップとは、前回実行したバックアップに対し、変更があった分だけを今回バックアップするという処理です(※3)。増分バックアップを行う場合は「-u」オプションで、dumpコマンドを実施した日時を保存しておく必要があります。

※3 増分バックアップに対し、常に全体のバックアップから変化した分をバックアップする方法を差分バックアップと呼ぶ。



 dumpの増分バックアップでは、どの版に対するバックアップを取るのかを指定するために「レベル」を使います。まず、初回はレベル0(デフォルト)で全体をバックアップし、次からは追加、変更があったファイルだけを増分バックアップします。

 増分バックアップで指定できるレベルは1〜9です。例えば、今回レベル5を指定した場合、作成先の中から5よりも小さい最大のレベルをdumpコマンドが探し、最大のレベルのうち最後にバックアップしたものが選ばれます。そのバックアップ後に追加、変更のあったファイルだけが今回の対象となります(※4)。

※4 例えば、最初にレベル0を実行し、その後毎週、レベル1を実行すると、レベル0以降に追加、変更があったファイルを毎回全てバックアップするため、対象となるファイルの数が次第に増えてくる(差分バックアップ)。最初にレベル0を指定し、毎週レベルを1つずつ増やして実行すると、1週間分の差分だけをバックアップするため、対象となるファイルの数を抑えることができる(増分バックアップ)。



 なお、増分バックアップの対象はデバイスに限られます。ファイルやディレクトリを指定した場合、常にレベル0(フルバックアップ)として扱います。バックアップ先にファイルを指定している場合、増分バックアップのファイルによって以前のバックアップを上書きしてしまわないように、注意してください。

 画面4では、動作を試すという意図で、初回は「/backup/sdb1.dump」、レベル1は「/backup/sdb1.dump1」……というファイルにバックアップを作成しています。

コマンド実行例

dump -0uf /backup/sdb1.dump /dev/sdb1

(/dev/sdb1を/backup/sdb1.dumpにバックアップする、初回)(画面4

dump -1uf /backup/sdb1.dump1 /dev/sdb1

(増分バックアップのレベル1、初回から変化した分だけをバックアップする)(画面4

dump -2uf /backup/sdb1.dump3 /dev/sdb1

(増分バックアップのレベル2、2より小さなレベルのバックアップから変化した分だけをバックアップする)(画面4


画面4 画面4 増分バックアップを実行したところ dumpコマンドの実行時に毎回、バックアップ対象のデバイスをアンマウントしている。


バックアップから復元する

 バックアップからの復元はrestoreコマンドで行います(画面5)。この場合は、レベル0から順に復元します。詳細は第202回で扱います。

画面5 画面5 バックアップから復元したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。