eu recomendaria a você e ao seu chefe que configurassem o rsnapshot. Ele vai lhe dar instantâneos com tanta frequência e voltar o quanto quiser.
Eu uso o rsync para fazer backups de arquivos e pastas:
rsync -avqz --stats --delete /media/server/ /media/Server2/
Isso exclui os arquivos que não estão presentes na origem e garante que o destino seja uma cópia exata da origem
Mas meu chefe quer que eu exclua apenas os arquivos que não estão presentes na fonte e têm 1 semana de vida. Algo como:
rsync -avqz --stats --delete(1 week old) /media/server/ /media/Server2/
Alguma idéia?
eu recomendaria a você e ao seu chefe que configurassem o rsnapshot. Ele vai lhe dar instantâneos com tanta frequência e voltar o quanto quiser.
O Rsync não suporta este comportamento fora da caixa. Você pode encontrar outra ferramenta como rsnapshot
como Jaylen sugeriu ser uma boa jogada.
Se você realmente quiser fazer exatamente o que descreve, veja o que você pode fazer.
Como alternativa, use a saída de rsync --delete -n
, mas, em vez de enfileirar, use outra verificação, como a data da última modificação no backup, para garantir que você exclua apenas coisas que não foram editadas em uma semana. Esse não é exatamente o comportamento que você pediu, mas seria mais fácil de programar e poderia ser suficiente.
Uma ferramenta alternativa é rdiff-backup : link , que mantém um espelho e um configurável por data, backup incremental.
Simplesmente você pode escrever um pequeno script bash para executar rsync e deletar arquivos de 7 dias. então você pode rodar esse script usando o crontab.
#----------------------------------------------------------
#!/bin/bash
rsync -avqz --stats --delete /media/server/ /media/Server2/
find /media/Server2/* -mtime +7 -exec rm {} \;
#-------------------End of the script-----------------------
O rsync fará isso com um pequeno ajuste ...
na máquina que você deseja fazer backup, execute o comando:
rsync -abvh --backup-dir=../oldcopysfilesdir/'date +%Y-%m-%d_%H.%M' --delete /path/to/source/ [email protected]:/path/to/target
isto fará backup de arquivos e pastas e criará uma pasta "oldcopysfilesdir" na máquina de destino com todas as cópias antigas de arquivos e pastas alterados, tudo em pastas com registro de data e hora específicas.
para excluir copys antigos na pasta "oldcopysfilesdir" na execução da máquina de destino:
find /path/to/oldcopysfilesdir/* -mtime +7 -delete
esse comando excluirá arquivos e pastas antigos com mais de 7 dias, mas apenas cópias antigas de arquivos alterados. Em "/ path / to / target" sempre haverá um espelho atualizado do diretório "/ path / to / source /". Para autografar, crie tarefas anacron ou cron para os comandos.