Como excluir arquivos excluídos anteriormente de uma nova cópia rsync?

3

Estendendo-se sobre esta questão:

Sincroniza automaticamente uma pasta com um USB quando o USB está conectado?

Eu não quero um script automático, mas apenas um pequeno script bash para fazer o seguinte:

  • Copie a corrente ~/Documents/ para uma pasta de backup
  • Copie os arquivos mais recentes do USB / Documents para ~/Documents/
  • Copiar e transferir exclusões de ~/Documents/ para USB/Documents/

Agora tenho:

# Backup local:
rsync -av ~/Documents/ ~/backup20112012/Documents/

# Synch new files from USB:
rsync -auv /media/20CC-A5E5/Documents/ ~/Documents/

# Sync and delete USB:
rsync -av --delete ~/Documents/ /media/20CC-A5E5/Documents/

que funciona com uma exceção. Se eu excluir um arquivo em ~ / Documents, ele será criado novamente na etapa 2 (porque está no USB). Existe uma maneira de omitir a cópia de arquivos que foram excluídos na segunda etapa?

    
por Zagga 15.09.2011 / 19:26

2 respostas

2

Suas exigências são um pouco estranhas. Parece que você deseja sincronizar ~/Documents e USB/Documents para que eles tenham o mesmo conteúdo. Se for assim, use unison , que é a ferramenta preferida quando você está procurando por um rsync bidirecional.

    
por Gilles 15.09.2011 / 22:55
0

Se você deseja excluir todos os arquivos que estão no USB que não estão no PC, acredito que você possa fazer isso:

# deletes any files that are on the USB that are not on the PC and synchronizes any files that have been changed more recently on the PC then on the USB.
rsync -auv --delete ~/Documents/ /media/20CC-A5E5/Documents/
# synchronizes files that are newer on the USB then on the PC
rsync -auv /media/20CC-A5E5/Documents/ ~/Documents/

Ao ter o primeiro comando use -u, você não deve sobrescrever quaisquer arquivos que estejam no USB e no PC, e usando --delete você apagará todos os arquivos que estiverem no USB que não estejam no PC. O segundo comando então sincroniza o USB com o PC.

A desvantagem de fazer isso é que TODOS os arquivos que estão no USB e não estão no PC serão excluídos. Isso é o que você quer, eu acho. Se você criar novos arquivos no USB que não estejam no PC, os novos arquivos no USB serão excluídos. Se você excluir qualquer arquivo no PC, eles serão excluídos no USB.

Do que você quer, não acho que isso seja suficiente, mas é o máximo que você pode fazer com o RSync.

Se você quisesse apenas apagar arquivos no USB que foram DELETADOS no PC, e NÃO excluir arquivos no USB que nunca estavam no PC, então você teria que criar algum tipo de programa que registraria toda vez que você excluiu um arquivo no seu PC e, em seguida, exclui apenas os arquivos do USB. O que é provavelmente muito mais complicado e mais trabalho do que você quer colocar para isso.

    
por daboross 09.06.2013 / 06:03

Tags