====== dumpとrestore ====== ==== はじめに ==== ふるくさいイメージがあるけど、まあいいですw 参考 http://www.atmarkit.co.jp/flinux/rensai/root05/root05c.html もはやこれでおなかいっぱいだったりします dumpとrestoreはふつうは1つのパッケージにセットで入ってます http://sourceforge.net/projects/dump/ 2011年でもバージョン0.4b。まあlinux版なんで オライリー本ではこれが聖書(Unixバックアップ&リカバリ) http://www.oreilly.co.jp/books/4873110491/ ==== dumpについて ==== ext2(ext3)のファイルシステムをがっつりとるのが目標なのです。restoreはファイル単位でもいちおうできますけど。 差分・増分も9世代(ここではダンプレベル)までいちおうとれる((ただしその世代管理は /etc/dumpdates に記載されているものによる))。ダンプレベル0でがっつり。ふつうは、ようはそれはすなわちひながたとるにちかいので(ddとは違うけど)、シングルモードとかでとるほうが吉。 > 増分や差分バックアップの場合は、 /etc/dumpdates を更新するように指定しないと記録されない。 === dumpのstdout === ほんとにこのとおりSTDOUTされるか定かではない…が たとえばテープが複数本になるとかのときは、Volume XX と出るはず。 そのへんのサイズやらは**大文字の -B オプション** で決める(はず)。テープ以外のメディアにとるときなんかは気にしないといけないと思う。 下記はローカルのHDDにdumpレベル0で取得した場合のログの参考。Volumeは1のみ(1つ)となっている。 DUMP: Date of this level 0 dump: //日付と時刻// DUMP: Dumping /dev/sda3 (/) to //ローカルHDD上のファイル名// DUMP: Label: / DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated XXXXXXXXX blocks. DUMP: Volume 1 started with block 1 at: //日付と時刻// DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: XX.XX% done at XXXX kB/s, finished in XX:XX DUMP: XX.XX% done at XXXX kB/s, finished in XX:XX DUMP: XX.XX% done at XXXX kB/s, finished in XX:XX (進捗が記載) DUMP: Closing //ローカルHDD上のファイル名// DUMP: Volume 1 completed at: //日付と時刻// DUMP: Volume 1 XXXXXXXX blocks (XXXXXMB) DUMP: Volume 1 took //おそらく所要時間// DUMP: Volume 1 transfer rate: XXXX kB/s DUMP: XXXXXXXX blocks (XXXXXMB) on 1 volume(s) DUMP: finished in XXXX seconds, throughput XXXX kBytes/sec DUMP: Date of this level 0 dump: //日付と時刻// DUMP: Date this dump completed: //日付と時刻// DUMP: Average transfer rate: XXXX kB/s DUMP: DUMP IS DONE ==== restoreについて ==== 原則としてがっつり展開するが、ファイルを個別に指定することもできる。また、対話モードが存在する。ファイルを一発指定するのがしんどいときは便利だと思う。 雰囲気としてはftpをコマンドでたたいてるみたい。(もちろん)?で簡易ヘルプも出る。 === 増分バックアップをリストアする場合 === 当然だが増分バックアップは、元のフルバックアップから先しかないので、ダンプレベル0から順番にリストアしないとならない。 === 対話restoreをためしてみる === ちょっと諸般の事情で試すことがあったので アーカイブされているファイルの場合は伸長しておく((もしかしたらオプションでどうにかなるかもしれないが……調べてないです)) テープが対象であればデバイス指定はテープとなる restore オプション ターゲットデバイス 今回はローカル上に保管したファイルなので # restore -if ./testdumpfile restore > ↑restoreモードになる。終了はquit。?を押すと Available commands are: ls [arg] - list directory cd arg - change directory pwd - print current directory add [arg] - add `arg' to list of files to be extracted delete [arg] - delete `arg' from list of files to be extracted extract - extract requested files setmodes - set modes of requested directories quit - immediately exit program what - list dump header information verbose - toggle verbose flag (useful with ``ls'') prompt - toggle the prompt display help or `?' - print this list If no `arg' is supplied, the current directory is used 目的のファイルは「add」でリストに入れるという感じで、最後にextractを入力 restore > add //リストアしたいファイル// restore > add //リストアしたいファイル2// restore > extract You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume # (none if no more volumes): Specify next volume # (none if no more volumes): 1 //←ボリューム指定// set owner/mode for '.'? [yn] y ボリュームは明示的に数字を入力しないとならない。今回はローカルのHDD上だったので、「1」。テープ複数本とかの場合は2とかになるはず。どのボリュームかどうか調べる方法は今回手をつけてないですごめんなさい。 展開後は作業ディレクトリ「以下」に/xxx が作成される。 たとえばtestuserさんがrestoretestで作業していた場合、/etc以下のほげほげをrestoreすると /home/testuser/restoretest/etc/。。。。 となる。なお、ディレクトリの作成日時はdumpした時点(のはず) 取り出すファイルが深い階層にあればそれだけディレクトリも自動的に作成される。 ==== その他 ==== === USBメモリにdumpをとるのは、ええのかどうか === https://forums.ubuntulinux.jp/viewtopic.php?id=10505 結論からいくと(extで)フォーマットしなおさんとあかんかったりするのであんまり適してないぽい。古き良きコマンドだからテープ前提だったりするし > 勉強のためなら/etc以下とかだけ(コピって)保管すればなんとか(ぇー === dumpファイルをアーカイブする === 理論上できなくないけど、相手のテープ等によゆうがあるなら、やらないほうがいい気がする。なぜなら、圧縮伸長するにもtar tvf するにも時間がかかりすぎるから。CPUパワーも使う。そしておそらく、圧縮してもそんなに圧縮率はみこめない。