How to reduce time to fast sync Ethereum Geth node from few days to 1 hour?

Here is the answer!

Here is a way to download data from the existing node and continue to sync:

Pre Requirements:

Hardware: at least 170 GB of free space on storage
Software: all we need is a docker (here is manual for Ubuntu):

sudo apt-get update -y

sudo apt-get install -y

sudo usermod -aG docker $USER

sudo su - $USER

1. Download ancient folder:

docker run -d --rm --name downloading-ancient \

-v $PWD/fastnode:/fastnode \

-w="/fastnode" cirrusci/wget \

wget --continue --no-host-directories --recursive --level=1 \

To view downloading log (be ready to wait a few hours, until wget creates the list of files that will be downloaded):

docker logs -f downloading-ancient

2. Run Geth specify the ancient folder:

docker run -d --rm --name fast-node-ethereum \

--ulimit nofile=10000:10000 \

-p 8545:8545 -p 30303:30303 \

-v $PWD/fast-ethereum-node:/root/.ethereum \

-v $PWD/fastnode/chaindata/ancient:/root/ancient \

ethereum/client-go \

--http --http.addr "" \

--nousb \

--ipcdisable \

--syncmode fast \

--datadir.ancient "/root/ancient"

To view geth log:

docker logs -f fast-node-ethereum

3. To check actual state of the node:

docker run --rm -it ethereum/client-go \

--exec "eth.blockNumber" \

attach http://$(hostname -I | awk '{print $1}'):8545

Donate ETH: 0x34AEC003f0F4812281770742c72D39D92Fdd58Ae