O rsync usa diretórios relativos à pasta raiz do rsync. Você deve conseguir isso usando algo como
rsync -aAX ./ ../target --exclude=/index.php
O " /
" indicará o diretório raiz.
Eu quero rsync de uma pasta, que contanins index.php (que precisa ser excluída), e muitos outros diretórios contém index.php também. Eu criei um arquivo de exclusão e adicionei index.php lá. mas todos os arquivos index.php desapareceram. Existe algum método adequado para evitar que o único arquivo seja sincronizado?
O rsync usa diretórios relativos à pasta raiz do rsync. Você deve conseguir isso usando algo como
rsync -aAX ./ ../target --exclude=/index.php
O " /
" indicará o diretório raiz.
O filtro --exclude
funciona assim:
Se o padrão não começar com uma barra, ele corresponderá ao final do caminho, em qualquer lugar da árvore.
--exclude myfile.txt
corresponde a qualquer arquivo chamado myfile.txt
em qualquer diretório .
--exclude logs/myfile.txt
corresponde myfile.txt
dentro qualquer diretório chamado logs
.
Se o padrão começar com uma barra, ele será ancorado a raiz dos arquivos transferidos .
Para determinar qual é a raiz dos arquivos transferidos, remova tudo após a última barra no caminho source .
Por exemplo, no seguinte comando rsync, o caminho de origem é /srv/files/something
e, portanto, a raiz da transferência é /srv/files/
.
rsync -a /srv/files/something host:/backup/files/
Portanto, para excluir o arquivo de origem /srv/files/logs/myfile.txt
, use --exclude /logs/myfile.txt
, em que essa barra no início do padrão de exclusão se refere à raiz da transferência, que está com raiz em /srv/files/
(na origem).