lftp exclui confusão de sintaxe

6

Estou confuso com a descrição da sintaxe dada para o lftp em seu site:

-x RX,   --exclude=RX              exclude matching files
-X GP,   --exclude-glob=GP         exclude matching files

Como exatamente excluo certos arquivos durante o espelhamento?

--exclude filea --exclude fileb --exclude filec
--exclude filea fileb filec
--exclude ./filea ./fileb filec

Eu também pesquisei isso e não consigo encontrar nenhum exemplo de declarações de exclusão?!

    
por user50390 01.11.2013 / 07:00

2 respostas

6

-x RX é para correspondência usando Regular eXpression , como em egrep() , enquanto -X GX é usado para Glob Pattern matching, que é essencialmente correspondência de caracteres normal, além de * . Então, por exemplo:

# To exclude .svn directories use:
mirror -e -x ^\.svn/$ /myhome/ /elsewhere

# To exclude all folders starting with a dot:
mirror -e -x /\..+/$ /myhome/ /elsewhere

# To exclude all *.bin AND *.so files:
mirror -e -X *.bin -X *.so /myhome/ /elsewhere

Como você pode ver, você terá que usar o -X para cada tipo de arquivo, já que não é possível fornecer uma lista, afaik.

    
por 18.01.2014 / 15:12
0

Aqui está minha tomada (verificada, em funcionamento):

Excluindo:

  • pastas ocultas & arquivos (também abrange .git)
  • os scripts / - Pasta (onde eu mantenho meu deploy.sh )
  • vários arquivos ativos / perigosos / de preparação / superficiosos ( nb: regExp com um pipe | operador faz (ela: interna, única) aspas necessárias)

deploy.sh

#!/usr/bin/env bash

# switch to script parent dir == project dir
cd "$(dirname $(dirname $0))"

if ! [[ "$PWD" =~ \/myproject$ ]]; then
    echo "you are not in the myproject folder!"
    exit 1
fi

# a (relatively) good place to store your credits (outside repo, ...)
read FTPCREDITS < ~/.ssh/creds/FTPCREDITS

if [ -z "$FTPCREDITS" ]; then
    echo "Could NOT read credits. Exiting."
    exit 2
fi

ok e finalmente:

lftp -c "set ftp:list-options -a;                                  \
    open $FTPCREDITS;                                               \
    lcd .;                                                         \
    mirror --reverse --delete --use-cache --verbose --allow-chown  \
    --allow-suid --no-umask --parallel=2                           \
    -x '^\.' -x '^script\/'                                        \
    -x '\.(psd|rev|log|cmd|bat|pif|scr|exe|c?sh|reg|vb?|ws?)$'     \
    ;                                                              \
    close -a;"

bom para testes:

  • --dry-run (naturalmente)
  • ./script/deploy.sh | grep Transferring para ver mais informações relevantes
por 28.11.2017 / 15:05