さくらのVPSで借りているサーバーを1台解約することにした。使わないから解約するのだけど、とはいえ、もしかするとまた必要になることがあるかもしれない。ファイルは全部保存しておくにしても、「動いていたサービスの様子を確認したいな」となったときのことを考えると、手元のVMで動かせるようにしておくのが一番である。
こういうときは、Mondo Rescueが定番で、方法を解説した記事もいっぱいある。でも、ちょいちょいハマリどころがある様子。自動化されているとはいえ、結局はファイルのコピーになるので、大量にファイルがあると重くないかとか、何かのバグで漏れたりしないかが心配。
せっかくの仮想サーバーなのだから、ストレージをそのままコピーしたい。が、その手段は用意されていない。「さくらのVPS ディスクイメージ」とかでググっていたら、下の記事が出てきた。クラウドに移行はできるらしい。
途中に出てくるアーカイブをダウンロードすれば手元のVMでそのまま動かせるのでは? と試してみたら、上手くいったので紹介する。なお、お金が数百円掛かる。
上記の記事の通りにVPSディスクをソースとしてアーカイブを追加する。
適当に項目を入れて作成。20分~90分掛かるとのこと。200 GBなので、まあそんなものかと思ったら……。たしかに作成はすぐに終わる。20分も掛かっていなかったかもしれない。しかし、「作成」と「ダウンロード」の2段階あるらしく、この「ダウンロード」がとても遅い。なぜ? 数時間掛かっても終わらなくて、諦めて寝て、起きたら終わっていたくらいの感じ。
「コピー完了時点から課金開始」は良いのだけど、こっちは完了したらすぐダウンロードしたいのに、寝ていたら時間が空いてお金が掛かってしまう。
ダウンロードはSFTP。IDやパスワードなどが設定された curl
のコマンドが出てくるので、それをそのままコンソールに貼り付ければ良い。ここのダウンロードは、少なくとも我が家の100 Mbpsの回線の速度はフルに出ていた。圧縮はされずストレージそのままなので、200 GBのストレージならそのまま200 GB。ダウンロードした後、サーバー側で消すのを忘れないように注意。
お値段はここ。VPSのストレージが200 GBだけど、100 GBの次が250 GBなので、250 GB分。11時間使って143円のところ、もう日額料金のほうが高いのでそれが適用され、137円。ダウンロードした後で消すのを忘れさえしなければ、たいした金額ではない。
ダウンロードしたファイルは生のディスクイメージ。VirtualBoxなら VBoxManage convertfromraw
でVM用のディスクに変換できる。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertfromraw archive.img archive.vdi
あとは適当にVMを作って、このディスクを割り当て、ネットワークの設定を変更したら動いた。ずっと公開鍵を使ってSSHログインしていて、パスワードが分からず、ネットワークが繋がらないからSSHも繋がらず……で手間取った。確認しておきましょう。
ストレージは200 GB中50GBくらい使っていた。ダウンロードしたイメージを圧縮して取っておこうと思ったら、bzip2で200 GBが150 GBくらいにしか縮まなかった。ダウンロード前に dd if=/dev/zero of=zero bs=4k
で空き領域を0で埋めておけば良かったかも。
他の方法
悪いこと言わないからMondo Rescueを使ったほうが良い。Mondo Rescueも試して、試した感じとても出来が良い。多少ファイルが多いとかくらいでトラブる作りにはなっていなそう。Mondo Rescueのほうは(空き領域は含まず)残っているファイルだけをアーカイブして、圧縮もしてくれるので、16 GBくらいになった。ちょいちょいハマるという話も、途中のfstabの編集でパーティションのUUIDを/dev/sda?に書き換えるのと、他の途中で書き換えることになるファイルで/dev/vda?を/dev/sda?にしたら動いた。
そういえば、ディスクイメージをそのままコピーしたほうがこの作業無しで動いているのはなぜなのだろう? パーティションのUUIDがそのままコピーされて、UUIDで指定されていればUUIDのほうが優先されるのか?
ダウンロードできるファイルって結局は/dev/vdaそのものなので、100円払わなくても、ddとsshで転送をするという手もある。試してはいない。今どきのファイルシステムなら動いている途中でコピーしたところで壊れはしないだろう。たぶん。怖いならsingle userモードという手もある。途中にgzipなどを挟むこともできる。