Portanto, tenho um problema aparentemente simples, mas até agora não encontrei uma solução: quero excluir o diretório superior de um rsync, enquanto ainda sincronizo todos os seus filhos. O problema específico é que não tenho permissão para modificar os horários do diretório superior, mas quero que todos os filhos tenham horários sincronizados corretamente.
O comando rsync que estou usando é o seguinte:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
e server.example.com:/usr/local/directory/
fica assim:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(meu usuário local é membro 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 executando o Debian.
Respostas:
Eu 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 alternativa é sincronizar todos os arquivos dentro deste diretório em vez do próprio diretório.
Adicione
.[!.]*
depois*
se você tiver arquivos de pontos no diretório superior e..?*
se tiver nomes de arquivos começando com dois pontos.fonte
*
foi o de--delete
não excluir nenhum arquivo, pois ele não fazia parte da pesquisa.