Você está procurando por wget - ele irá, por padrão, recriar a mesma estrutura de diretórios em seu host local, como no servidor de onde ele está buscando coisas.
Eu tenho uma lista de arquivos que preciso baixar, como
www.domain.com/files/archive.zip
www.domain.com/img/icon.ico
www.domain.com/files/backup/archive.zip
www.domain.com/backup/img/icon.ico
www.domain.com/archive.zip
o que significa que eu tenho colisão de nomes nesta lista de arquivos, então eu preciso manter a estrutura de diretórios intacta e recriá-la durante o download, eu não encontrei nada parecido com isso no urllib do Python e não sei de qualquer ferramenta do Linux que possa ser boa para isso.
Alguma sugestão?
wget pode fazer isso facilmente:
wget -x -nH http://www.domain.com/files/archive.zip
Isso criará o diretório local files
e baixará archive.zip para ele.