Como rsync cronologicamente começando com os arquivos mais recentes

0

Eu tenho a seguinte estrutura de diretórios

item_1
item_12
item_33
..etc..

Agora, gostaria de começar a fazer o rsyncing dos arquivos mais recentes e sincronizá-los cronologicamente na lista.

Ou a opção 2: Como rsync diretórios que não tenham mais de uma semana.

Histórico: tenho vários TB de dados em uma unidade lenta e preciso sincronizá-los em uma unidade rápida. Agora, pulando a sincronização de todos os dados de uma só vez, gostaria apenas de sincronizar os dados recentes.

É possível fazer isso apenas com o rsync, ou eu tenho que trabalhar com o find em combinação com o rsync?

    
por Aley 23.10.2018 / 15:38

1 resposta

0

rsync sempre classifica seus arquivos de origem, pois isso facilita muito a comparação da lista de arquivos no destino para localizar arquivos que foram removidos, novos arquivos que foram adicionados e arquivos que foram atualizados.

No caso extremo, você pode encontrar os arquivos mais recentes e executar rsync com apenas um único arquivo de origem várias vezes; se isso é eficiente é duvidoso.

Você precisa decidir como selecionar quais diretórios sincronizar. Se você olhar apenas para o registro de data e hora do diretório, poderá perder arquivos dentro desse diretório que foram atualizados ou mesmo subdiretórios e arquivos dentro deles.

Se você realmente deseja apenas sincronizar arquivos recentes e não se preocupar com a exclusão de arquivos no destino que foram removidos da fonte, use algo como:

find topdir -mtime -7 -type f -print0 > /tmp/list-of-files
rsync -ptgo --files-from=/tmp/list-of-files --from0 ./ destinationdir/

Isso primeiro cria uma lista de arquivos com menos de sete dias e os armazena em um arquivo temporário, com terminação nula (para que nomes de arquivos com espaços e novas linhas incorporadas ainda funcionem corretamente). Observe que você provavelmente precisará encontrar um local seguro para colocar essa lista, pois colocá-lo em /tmp abre você para problemas de segurança, especialmente com um nome fixo como acima.

Em seguida, diga rsync para transferir esses arquivos, preservando as permissões, registros de data e hora, configurações de grupo e de usuário.

    
por 23.10.2018 / 16:00

Tags