rsync: como excluir o diretório mais importante

14

Portanto, tenho um problema aparentemente simples, mas até agora não encontrei uma solução: desejo excluir o diretório superior de um rsync e ainda sincronizar todos os seus filhos. A questão específica é que eu não tenho permissão para modificar os horários do diretório superior, mas quero que todos os filhos tenham tempos de sincronização propriamente ditos.

O comando rsync que estou usando é o seguinte:

rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/

e server.example.com:/usr/local/directory/ são assim:

drwxrws---  5 root   staff 24576 Jul  9 15:00 .

(meu usuário local é membro de staff )

Quando executo o rsync, recebo o seguinte erro:

rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23

Esta é a versão 3.0.9 na máquina local e 3.0.7 no controle remoto, ambas as máquinas rodando Debian.

    
por Steve Pomeroy 09.07.2012 / 21:20

1 resposta

7

Acho que as regras de filtro do rsync não podem corresponder ao diretório de nível superior, por isso é sempre sincronizado. Uma solução é sincronizar todos os arquivos dentro desse diretório em vez do próprio diretório.

rsync -rlptDu -- * server.example.com:/usr/local/directory/

Adicione .[!.]* após * se você tiver arquivos de ponto no diretório superior e ..?* se tiver nomes de arquivos que iniciem com dois pontos.

    
por 10.07.2012 / 00:27

Tags