rsync - Como excluir um .htaccess mas nem todos eles

3

Eu tenho um comando rsync para copiar meus arquivos do dev para produção. Eu não quero copiar o arquivo .htaccess que está na raiz do diretório HTML, mas, eu quero copiar os poucos arquivos .htaccess que estão em seus subdiretórios.

Estou usando o argumento --exclude .htaccess , que está impedindo que todos os arquivos sejam copiados. Os outros argumentos que estou incluindo são -a --recursive --times --perms . É possível configurar o rsync para fazer isso?

Editar: Aqui está o meu comando completo:

rsync -a --recursive --times --perms \
    --exclude prop_images --exclude tracking --exclude vtours \
    --exclude .htaccess --exclude .htaccess_backup --exclude "*~" \ 
    /home/user/dev_html/* /home/user/public_html/
    
por Cory Gagliardi 21.10.2012 / 16:29

2 respostas

3

Quando você especifica --exclude .htaccess , está excluindo qualquer caminho que termine em .htaccess .

Para excluir somente o .htaccess na raiz da origem da transferência, você precisa --exclude /.htaccess

Na página do manual do rsync, alguns detalhes adicionais e uma referência à leitura adicional:

  • if the pattern starts with a / then it is anchored to a particular spot in the hierarchy of files, otherwise it is matched against the end of the pathname. This is similar to a leading ^ in regular expressions. Thus "/foo" would match a file named "foo" at either the "root of the transfer" (for a global rule) or in the merge-file's directory (for a per-directory rule). An unqualified "foo" would match any file or directory named "foo" anywhere in the tree because the algorithm is applied recursively from the top down; it behaves as if each path component gets a turn at being the end of the file name. Even the unanchored "sub/foo" would match at any point in the hierarchy where a "foo" was found within a directory named "sub". See the section on ANCHORING INCLUDE/EXCLUDE PATTERNS for a full discussion of how to specify a pattern that matches at the root of the transfer.
    
por 21.10.2012 / 17:10
0

Experimente esta opção:

--exclude 'some/parts/of/path/.htaccess'

Globs também são permitidos:

--exclude 'some/*/of/*/.htaccess'
    
por 21.10.2012 / 16:45

Tags