有时候链出了问题,或者我们只想要指定区块链之前的数据,这个时候我们可以通过geth export
. geth import
来得到相应高度的链.
首先我们来了解下两个命令的功能和用法
//Export blockchain into file 导出链
//eg: geth export chain.rlp 0 1110002 注意指定--datadir, 见下面具体操作
geth export <filename> [<blockNumFirst> <blockNumLast>]
//Import a blockchain file 导入链
//eg: geth import chain.rlp 注意指定--datadir, 详见下面具体步骤
geth import <filename> (<filename 2> ... <filename N>)
从导出到导入的整体流程是这样的:
//1. 将/home/linfang/workspace/recoverdatas/rdata目录下的链的数据导出到文件chain5000.rlp, 导出区块区间是0-5000
geth --datadir /home/linfang/workspace/recoverdatas/rdata export /home/linfang/workspace/recoverdatas/rdata/chain5000.rlp 0 5000

- 在一个新目录下,初始化一个链,注意genesis.json文件必须和导出的链数据的genesis.json文件一致,因为导入链数据是在原来的链基础上拼接,所以我们需要初始化链,并且保证创世区块一致.
geth --datadir "/home/linfang/workspace/recoverdatas/datanew" init "/home/conf/genesis.json"

- 现在真正导入链,把导出的链文件导入到第二步初始化的链中
geth --datadir /home/linfang/workspace/recoverdatas/datanew import /home/linfang/workspace/recoverdatas/rdata/chain5000.rlp

- 启动链 当然启动命令不用跟我完全一样,正常启动就好
nohup geth --datadir /home/linfang/workspace/recoverdatas/datanew -rpcvhosts '*' --networkid 2019031420190314 --rpc --rpcapi 'eth,net,web3' --rpcaddr "192.168.22.88" --rpcport 8549 --port 30301 --rpccorsdomain '*' --nodiscover --verbosity 5 2>> /home/datanew/eth.log &
- 查看导入的链高度
geth attach http://192.168.22.88:8549

网友评论