Estou tentando espelhar um site para archive.org
, mas usar curl
é muito lento. Por isso, tentei usar aria2
.
Primeiro, faço um mapa de links do site usando este comando
wget -c -m --restrict-file-names=nocontrol https://www.example.com/
e, em seguida, execute este comando usando o curl
find . -type f -exec curl -v "https://web.archive.org/save/https://{}" ';'
(Na verdade, usei este comando para obter um log suficientemente bom do que estava fazendo
find . -type f -exec curl -v "https://web.archive.org/save/https://{}" ';' 2> >(grep 'Rebuilt URL' >>/tmp/error ) >/tmp/stdout
- incluiu aqui para referência)
Isso estava funcionando bem, a saída produzida pelo comando find como
./www.example.com/index
e enrolar magicamente ignoraram o primeiro ./
Bem, Aria2 não era tão inteligente. Este comando
find . -type f -exec aria2c -x 16 -s 1 "https://web.archive.org/save/https://{}" ';'
leva a esse erro:
07/24 23:40:45 [ERROR] CUID#7 - Download aborted. URI=https://web.archive.org/save/https://./www.example.com/index
(Observe o ./
extra no meio da URL).
Encontrei então esta questão que me ajudou a modificar a saída de encontrar
find . -type f -printf '%P\n'
retorna
www.example.com/index
(sem liderança ./
)
No entanto, ao alimentar isso para aria2, o URL concatenado ainda contém ./
no meio!?!?
find . -type f -printf '%P\n' -exec aria2c -x 16 -s 1 "https://web.archive.org/save/https://{}" ';'
fornece esta mensagem de erro
www.example.com/index
07/24 23:52:34 [NOTICE] Downloading 1 item(s)
[#d44753 0B/0B CN:1 DL:0B]
07/24 23:52:35 [ERROR] CUID#7 - Download aborted. URI=https://web.archive.org/save/https://./www.example.com/index
Exception: [AbstractCommand.cc:351] errorCode=29 URI=https://web.archive.org/save/https://./www.example.com/index
-> [HttpSkipResponseCommand.cc:232] errorCode=29 The response status is not successful. status=502
07/24 23:52:35 [NOTICE] Download GID#d44753fe24ebf448 not complete:
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
d44753|ERR | 0B/s|https://web.archive.org/save/https://./www.example.com/index
Como faço para me livrar do ./
, então aria2 é alimentada com URLs corretos e adequados?
Perguntas adicionais:
Seria ótimo se eu pudesse (re) mover as páginas depois de processar seu URL. Ou seja, mova o índice de ./www.example.com/index
para ./processed/www.example.com/index
. Como faço isso? Algo no comando exec
do comando find
? Ou isso requer um roteiro completo?
Quais são as configurações ótimas para aria2 para este propósito?