inclui / exclui arquivos para “scp -r”

4

Pasta local suposta, conforme abaixo:

/test/subfolder
/test/subfolder/file1.txt
/test/subfolder/page1.htm
/test/subfolder/page2.htm
/test/.hiddenfolder
/test/./hidenfolder/file2
  1. Como excluir .hiddenfolder para ser transferido ao executar "scp -r test user @ ip: /"?

  2. Como incluir apenas arquivos * .htm e transferi-los para a subpasta correspondente no servidor remoto?

  3. Quaisquer outros comandos podem realizar esse trabalho mais facilmente?

por jack 27.10.2009 / 04:31

2 respostas

4

Eu não acho que scp sozinho pode fazer o que você pede. Você deve investigar o rsync.

Eu o uso para backups com um filtro para excluir arquivos com nomes que não funcionam em volumes NTFS

# the exclude is to filter out files with invalid names on NTFS
/usr/bin/rsync -rgqoxD --delete --exclude='*[:\?]*' /home/andrewr/src /filer001/syncd/src

você também pode passar o nome de um arquivo que contém os arquivos a serem excluídos ( --exclude-from=file )

Editar : aqui está uma linha de comando de exemplo que funciona para o seu exemplo:

cd src; find . -type f -name "*.htm" | rsync -av --files-from=- . host:dir
    
por 27.10.2009 / 05:30
2

Se você já tem chaves ssh pré-compartilhadas, você pode primeiro criar todos os diretórios remotos da seguinte maneira:

# get all directories in this tree
for DIR in 'find . -type d'
    do
        # create remote directory
        ssh user@host mkdir -p /path/to/start/$DIR
        # copy *only* *.htm files
        scp $DIR/*.htm user@host:/path/to/start/$DIR
    done

Acho que é sobre o que você está procurando.

    
por 27.10.2009 / 05:29