Rsync excluir apenas remover arquivos de origem antigos

0

Ok, eu provavelmente poderia gastar muito tempo escrevendo um conjunto complexo de scripts bash que realizaria isso, mas espero que essa funcionalidade já exista em algum lugar.

Eu tenho um dispositivo no meu carro que funciona como um dashcam. Eu gravo vídeo em segmentos de 3 minutos. Quando chego em casa, ele se conecta automaticamente ao wifi e inicia um daemon ssh.

Eu quero algo que eu possa chamar do cron, para ssh in e rsync os vídeos para minha máquina linux. Até agora isso é fácil. O que eu quero fazer, então, é apagar arquivos do dispositivo dashcam, mas não todos eles - eu quero excluir apenas aqueles que são mais antigos do que X dias. E eu quero isso de alguma forma amarrado com o rsync, então é absolutamente apenas excluí-los se o rsync souber que os copiou.

Se o rsync tivesse uma opção como "-remove-source-files-older-than" ele funcionaria perfeitamente.

EDIT: Talvez haja alguma outra ferramenta além do rsync que seria mais adequada para essa tarefa?

    
por megadave 13.04.2015 / 11:36

1 resposta

0

Eu tenho uma abordagem em duas etapas, que funcionará:

Primeiro, transfira TODOS os arquivos como de costume com o rsync. Em seguida, inicie outra etapa do rsync com a opção --remove-source-files , mas execute-a apenas nos arquivos de vídeo antigos .

maneiras de fazer isso (alimentando apenas os arquivos antigos):

  • Use ZSH em vez de bash, veja a resposta aqui: rsync N arquivos mais recentes em um diretório . Por exemplo, selecionando todos os arquivos que são mais antigos que 24h: ls *(mh+24)
  • use uma tubulação de ls , grep , etc. para filtrar os arquivos e alimentá-los para o rsync, ver a outra resposta no link
por 13.04.2015 / 11:56