rsync N arquivos mais recentes em um diretório

6

Qual seria a maneira mais fácil de fazer rsyncing dos n arquivos mais recentes em um diretório para um servidor remoto?

    
por Leda 08.11.2010 / 18:20

2 respostas

6

A maneira mais fácil é executar zsh em vez de bash.

rsync -a -- /path/to/directory/*(om[1,42]) remote-server:

Entre parênteses, om ordena arquivos pelo tempo de modificação reversa (por exemplo, aumentando a idade) e [1,42] seleciona as primeiras 42 correspondências.

Se você deseja apenas arquivos regulares e não diretórios, adicione um . após o parêntese de abertura. Para mais possibilidades, veja em "qualifiers glob" na zshexpn man page .

Se você quiser corresponder arquivos na árvore de diretórios com raiz em /path/to/directory , em vez de apenas dentro desse diretório, use /path/to/directory/**/*(.om[1,42]) . Isso enviará todos os arquivos para o mesmo diretório no destino.

    
por 09.11.2010 / 01:02
2

Supondo que você deseja enviar arquivos do diretório de trabalho atual:

rsync 'ls -tp | grep -v / | head -n <n>' <destination> <options>

fará o truque. Por exemplo:

rsync 'ls -tp | grep -v / | head -n 10' user@host:/dest/dir/ --progress --compress

Isso causará um erro se não houver arquivos no diretório de trabalho atual ou se algum dos arquivos principais contiver espaços ou outros caracteres especiais.

Os 'caracteres em torno de ls -tp | grep -v / | head -n <n> dizem ao bash para executar os comandos e os substituiu pela lista de arquivos resultante como uma lista separada por espaços. A opção -t informa ls para classificar por timestamp, o -p diz para adicionar / após nomes de diretório e a parte grep exclui linhas terminando em / para que você não acabe enviando diretórios . Adicione -c às opções ls se você quiser que os arquivos mais novos sejam julgados pelo tempo de criação em vez do tempo de modificação (embora alguns programas removam e substituam arquivos em vez de atualizá-los, o ctime e o mtime podem ser os mesmos embora um arquivo parece ter sido em torno de mais tempo).

Eu não vou afirmar que é sem dúvida a maneira mais fácil , mas seria a maneira que eu pensaria primeiro.

    
por 08.11.2010 / 19:29