Portanto, eu tenho um diretório com um milhão de arquivos e diretórios de 50k aninhados com aproximadamente 10 camadas. Demora muito tempo simplesmente para percorrer e buscar um arquivo de 100 bytes a partir de 1/10 dos diretórios, porque ele tem que fazer o ftp em cada diretório e fazer o que fizer. Provavelmente leva algumas horas para fazer isso, mesmo que não haja realmente nenhum conteúdo sendo baixado.
Portanto, uma solução para o meu problema (ou o que estou tentando) é fazer isso:
function download() {
wget -r \
-c \
-A $3 \
-A $2 \
"$1$2"
}
domain="ftp://domain.com"
path=/foo
download $domain $path $path/*/README*
download $domain $path $path/*/data.xml
download $domain $path $path/*/ARCHIVE_*/*.gz
download $domain $path $path/*/Bar/example.txt
download $domain $path $path/*/Hello/*/world.*.txt
Mas isso ainda não está funcionando, e quero que cada linha faça o download desses padrões, mas parece que tenho mais trabalho a fazer lá. Eu estou recebendo um monte destes:
Rejecting 'README'
Rejecting 'X_Y_Z.gz'
...
Então eu tentei apenas fazer isso:
download $domain $path \
$path/*/README*,$path/*/data.xml,$path/*/ARCHIVE_*/*.gz,$path/*/Bar/example.txt,$path/*/Hello/*/world.*.txt
Mas ainda é o mesmo problema.
A questão aqui é como eu posso fazer este um wget
comando (de modo que ele não tem para reprocessar o diretório árvore inteira ftp 5 vezes) baixar apenas os arquivos / diretórios que correspondam a esses padrões.
Eu tento alterar o -A
para -I
e ele começa a baixar as coisas que eu não quero:
function download() {
wget -r \
-c \
-I $3 \
-I $2 \
"$1$2"
}
Eu tentei este também, mas ele baixa coisas que eu não quero :
function download() {
wget -r \
-c \
--accept-regex $3 \
"$1$2"
}
domain="ftp://domain.com"
path=/foo
download $domain $path \
$path/.*/README.*,$path/.*/data.xml,$path/.*/ARCHIVE_.*/.*.gz,$path/.*/Bar/example.txt,$path/.*/Hello/.*/world..*.txt
Tags wget