Copiar / fazer backup de todos os arquivos, exceto o mais recente, por meio do scp

1

Eu tenho um programa que está sendo executado em várias máquinas e que está gravando os resultados em ~/data/machine_name/ , cada vez que o arquivo de resultados excede 1 MB, o programa é movido e grava em um novo arquivo. (Todas as máquinas têm a mesma arquitetura de diretórios).

Eu quero fazer um backup automático desses arquivos no caso de uma das máquinas falhar. Sabendo que o arquivo acessado mais recente é aquele que está sendo escrito pelo programa e, portanto, eu copiaria todos os arquivos antigos, exceto este. Na próxima vez que a tarefa de backup for disparada, o arquivo mais recente omitido no backup anterior será incluído e assim por diante.

Agora, estou usando apenas um comando scp simples, que copia até o arquivo que está sendo aberto pela máquina remota.

Existe alguma maneira de conseguir isso? um utilitário de linha de comando ou um script para tal trabalho?

    
por 0xFF 27.07.2011 / 18:02

1 resposta

2

Você pode usar o utilitário de backup rsync com a opção --exclude :

/usr/bin/rsync -avz --exclude='$EXCLUDED_DIR_OR_FILE' -e ssh /your/base/folder \
user@host_or_ip:/target/machine/path >> /optional/log/file.log

Você pode determinar a variável $EXCLUDED_DIR_OR_FILE encontrando o último arquivo atualizado. Existem várias maneiras de encontrar o último arquivo atualizado em um determinado diretório, uma delas usando ls e awk utilitários juntos:

ls -lrt | awk '{ f=$NF }; END{ print f }'

Observe que este comando imprime o último file name modificado pela última vez e não o caminho completo para o arquivo.

    
por 27.07.2011 / 18:16