Como extrair o arquivo do conteúdo remoto com base no nome parcial do arquivo?

1

Eu tenho algumas subpastas (A, B, C, D ..) em um servidor remoto que contém arquivos em torno de 100.gz. O padrão de nomenclatura de arquivos é semelhante ao ND2_58_20151105173030_20151105173240_1234.log.gz, onde o 3 º e 4 º campo após _ é o horário inicial e final. Agora, se a hora de início / fim é com 15 minutos a partir da hora atual eu quero buscar esse arquivo .Pode alguém me sugerir como fazê-lo usando o shell script.Para buscar dados estou usando rsync.

Obrigado Arn

    
por Arn 06.11.2015 / 11:04

2 respostas

1

Você pode usar as opções --include e --exclude para rsync para selecionar apenas os arquivos desejados. Se eu entendi sua pergunta corretamente, você quer os arquivos cujo nome contenha a data / hora atual mais ou menos 15 minutos. Não tenho certeza se você precisa de exatamente 15 minutos, mas aqui está um pequeno script que pode fazer isso:

#!/bin/sh

format='%Y%m%d%H%M'

for delta in $(seq -15 15); do
    p='--include=*_'$(date +$format --date "+ $delta minutes")'*_*.gz'
    include="$include $p"
done

rsync -av $include --exclude=* SRC/ DEST/

Deve ser fácil de modificar para exatamente 15 minutos.

    
por 06.11.2015 / 13:20
0

Se você pode confiar nos dados do sistema de arquivos , você pode usar find e rsync juntos.

find /path -file -mmin +15 -exec rsync {} destination \;

ou com uma lógica reversa e apenas um rsync process

rsync --files-from=<(find /path -mmin +3 -type f -exec basename {} \;) /src_path/ /dst_path

Referência

Você pode dar uma olhada neste [answer] [ 1 , 2 , 3 ], por exemplo ...

    
por 06.11.2015 / 11:29

Tags