追記ここから
わざわざこんなことしなくても、wallet.datファイルを消すか他の場所に移動してから、
$ tar -czvf bitcoin.tar.gz ~/.bitcoin
とでもして、その圧縮ファイルを移動して所定の場所で解凍するのが一番早いと思います(試してませんが、、、)。
以下の方法は新たに txindex を有効にしたものを作りたいときは良いかもですね。
追記ここまで
自分用覚え書きです。Bitcoin coreの同期が終わったマシンが手元にあるけどもう一台立ち上げたい、そんなときの話です。
前提条件
- 既に同期が終わっており自分が管理しているBitcoin Coreノードが存在している
- もう一台、Bitcoin Coreを走らせたくなったが、BlockChainの同期がトロイのが嫌
- 手持ちに同期が終わっているノードがあるのだから、GbEで繋いで高速に同期できないかと思っている (まあGbEでなくてもいいですけど、たとえば同じLANにあるとして)
- BlockChainと言っても結局ファイルで ./bitcoin 以下をうまいこと移動すればできそうだけどなんとなくめんどい人
- 自前で同期しているものがあるのに、インターネットを経由して他のノードから落とすのに罪悪感がややある人
- Linux環境 (Windowsやその他OSでも似たようにできるとは思いますが試していないので)
方法
- 新しいマシンの方にBitcoin Coreをダウンロードして展開
(https://bitcoin.org/en/download) - 以下のコマンドを打つ (IPアドレスは既に同期が終わったマシンのもの。今回は例として192.168.150。coonectオプションでノードを指定できるようです)
$ ./bin/bitcoind -daemon -connect=192.168.1.50
- 同期が始まる (一応、以下のコマンドできちんと↑のマシンに接続されているか確認可能)
$ ./bin/bitcoin-cli getpeerinfo
[
{
"id": 1,
"addr": "192.168.1.50",
"services": "000000000000000d",
"relaytxes": true,
"lastsend": 1502829024,
"lastrecv": 1502829024,
以下略
- 帯域を見たければdstatなどで
$ dstat --disk --net
-dsk/total- -net/total-
read writ| recv send
116k 17M| 0 0
0 25M| 12M 69k
0 21M|4600k 7771B
0 71M|3323k 11k
0 51M| 70B 210B
0 62M| 70B 210B
284k 48M|4657k 19k
0 28M| 10M 18k
0 25M|9982k 32k
0 23M| 11M 58k
0 36M| 10M 92k
0 49M|6728k 29k
0 24M| 12M 35k
- 一日程度待って終わり
自分の環境と結果
- 既に同期が終わったBitcoin Coreが走っているマシンA
- 新しくBitcoin Coreを入れたいマシンB
- 同じLANでGbEで接続されている
という環境(上記のマシンたちのCPUはSandy Bridge以降のi3以上だった気がします)で、ムラがありますが最大25MB/s (=120Mbps) 程度出ました。平均して10MB/s程でしょうか。一分で600MB、一時間で3.6GBなので悪くはないと思います。BlockChainは現在(2017年8月16日)140GBほどなので、一日ちょっとで終わる計算です。
理想的な方法としては ./bitcoinのblockchain部分を圧縮して転送すれば良いのでしょうが具体的にどのファイル・ディレクトリをやればいいのかよく分からなかったので上記の方法を取りました。wallet(アカウント)も一緒に入れたければそのまま./bitcoinを圧縮・転送すれば良いのでしょうが今回はそうしたくなかったもので。もしやり方をご存じの方がいらっしゃれば具体的なコマンド付きで教えてください。(書いてて思いましたが./bitcoinを圧縮・転送して、展開してからwallet.datだけ消せば良い気もしてきました、動くか分かりませんが)