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:

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:

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: 0xDf4fdf1F310eEAEfc173C41cA271735b09802163