rsync: como excluir o diretório superior

rsync: como excluir o diretório superior

Então, 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 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 na remota, ambas as máquinas rodando Debian.

Responder1

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

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

Adicione .[!.]*depois *se você tiver arquivos de ponto no diretório superior e ..?*se tiver nomes de arquivo começando com dois pontos.

Responder2

Parece que o rsync pode excluir o diretório superior usando --files-from:

$ rsync -anv from/ to/
sending incremental file list
./
a
b.test

sent 97 bytes  received 25 bytes  244.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
$ printf '%s\n' 'a' 'b.test' | rsync -anv --files-from=- from/ to/
building file list ... done
a
b.test

sent 88 bytes  received 22 bytes  220.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

Apenas tropecei nele, deixando uma pista aqui caso ajude alguém (ou a mim no futuro).

informação relacionada