O rsync pode ser configurado para evitar a modificação de subdiretórios não encontrados na pasta de origem?

1

Estou tendo dificuldade em descobrir exatamente como executar o rsync para que ele faça o que eu preciso. Basicamente, o que eu preciso é o seguinte, dada uma única pasta de origem com vários subdiretórios:

-Se arquivos para um determinado subdiretório forem alterados na pasta de origem, sincronize essas alterações com o destino (atualize os arquivos e exclua os arquivos não encontrados na pasta de origem por mais tempo).

-Se uma pasta for encontrada na origem, mas não no destino, sincronize a pasta e todo o seu conteúdo para o destino.

-Se uma pasta for encontrada no destino, mas não na origem, não faça nada (por exemplo, não a exclua).

Esta é a aparência da estrutura de diretórios:

Source Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 newer.txt
   Folder 3
      File 3.txt

Destination Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 old.txt (to be replaced with File 2 newer.txt)
   (Folder 3 not yet in destination, to be added from source)
   Folder X (not in source, to be left untouched)
    
por Ian K 27.10.2014 / 22:18

2 respostas

0

De acordo com o man rsync, você pode usar:

--exclude=PATTERN

Ou a sua lista é muito grande, você pode usar:

--exclude-from=FILE 
    
por 27.10.2014 / 23:21
0

O que você descreve é o comportamento padrão padrão do rsync.

Se você quisesse um comportamento diferente, teria que usar uma das opções --delete .

Este é um teste que prova o meu ponto:

 $ mkdir tmp1
 $ mkdir tmp2
 $ mkdir tmp1/1
 $ mkdir tmp1/2
 $ mkdir tmp2/1
 $ mkdir tmp2/X
 $ touch tmp1/1/1.txt
 $ touch tmp1/2/2.txt
 $ rsync -avz tmp1 tmp2
 sending incremental file list
 tmp1/
 tmp1/1/
 tmp1/1/1.txt
 tmp1/2/
 tmp1/2/2.txt

 sent 208 bytes  received 62 bytes  540.00 bytes/sec
 total size is 0  speedup is 0.00
 $ ls tmp2
 1  tmp1  X

Você pode ver que o diretório X está lá, intocado.

Se você estiver usando isso como um daemon, talvez seu rsync esteja aplicando opções de um arquivo de configuração.

Veja /etc/rsyncd.conf para ver se alguma opção de exclusão está definida ou em rsyncd.conf no diretório inicial do usuário que está iniciando o rsync

Espero que ajude.

    
por 29.10.2014 / 18:21

Tags