Minha pergunta:
Como posso ter certeza de que o LFTP inclui apenas arquivos AND diretórios usando --include
ou --include-glob
, e não baixar vários diretórios extras da raiz do controle remoto que não são está nos includes?
Algum contexto:
Estou usando o LFTP e espelhamento para fazer o download de um arquivo de sites, mas só quero baixar alguns arquivos e diretórios. Então, eu dei ao LFTP algumas inclusões e exclusões para rodar a partir da raiz do servidor remoto.
No meu entender, de acordo com o homem do LFTP, ele incluirá APENAS todos os arquivos para os quais você informar, caso você especifique incluir, e então aplicará suas exclusões às regras de inclusão. Isso funciona simplesmente para arquivos no diretório raiz e não para baixar nenhum arquivo que não esteja incluído ... no entanto, ele está baixando todos os diretórios na raiz, não apenas os que eu pedi para incluir.
Minha suspeita é que estou tendo problemas com o uso de --include
e --include-glob
... Não importa o que eu tentei entre ambos (glob ou regex), não consigo obter o LFTP mirror para não baixar diretórios fora do que eu especifico em meus includes.
Aqui está o meu meu script bash (algo novo no bash scripting)
#!/bin/bash
# Credentials
protocol="ftp" # ftp or sftp
host="host"
user="user"
pass="pass"
localcd="/path/to/localdir"
remotecd="/remotedir"
# Set up FTP URL
ftpurl="$protocol://$user:$pass@$host"
# Default includes - helps only include core files in root in case there are other random files
includes="--include-glob wp-admin/*" # other dirs are still being downloaded with these three
includes+=" --include-glob wp-content/*"
includes+=" --include-glob wp-includes/*"
includes+=" --include ^wp-.*\.php$" # works just fine
includes+=" --include ^index.php$" # works just fine
includes+=" --include ^xmlrpc.php$" # works just fine
# Exclude hidden files/directories
excludes="--exclude-glob .*"
excludes+=" --exclude-glob .*/"
# LFTP sets
lftp_sets="set cmd:fail-exit yes;"
if [ "$protocol" == "ftp" ]
then
lftp_sets+=" set ftp:ssl-allow no;"
fi
# Run the LFTP
lftp -e "$lftp_sets
open '$ftpurl';
lcd $localcd;
cd $remotecd;
mirror --continue --only-newer --delete --verbose=3 --no-perms --parallel=8 $includes $excludes"
Eu tentei
includes="--include ^wp-.*/.**"
e
includes="--include ^wp-admin/.*"
includes+="--include ^wp-content/.*"
includes+="--include ^wp-includes/.*"
e tantas outras variações que não posso contar. Tudo o que eu pesquisei sobre LFTP espelho 4 páginas tem um link roxo. : (