Copiando os arquivos mais recentes

1

Temos um script em execução que pega o relatório gerado mensalmente em servidores remotos. Eu estava tentando encontrar uma maneira de pegar o arquivo mais recente apenas dos servidores remotos. Vai encontrar trabalho em script ou isso é uma má prática?

for host in "${hosts[@]}"; do
    scp "$host":"$remote_path" "$local_target_dir"/filename."$host"
done

Formato de arquivo = servername_BBC-3.0_2014-06-04_164510_.txt

    
por user67186 12.06.2014 / 17:59

2 respostas

1

Você pode executar um ls -rt via SSH no servidor dentro do diretório para descobrir o último arquivo modificado (com base na data da última modificação em vez do nome do arquivo)

fileToCopy=$(ssh "$host" "cd $remote_path && ls -rt | tail -1")
scp "$host":"$remote_path"/"$fileToCopy" "$local_target_dir"/filename."$host"
    
por 12.06.2014 / 18:28
0

Sugiro que ele seja validado e tenha em consideração o último backup, por exemplo:

#!/bin/bash
day=${date +%d}
last_month=${date -d "-1 month" date +%Y-%m-%d}
if [ $day -eq 15]
then
    echo "Is 15th, time to make get last backup!"
    scp -P port user@server:/dir/servername_BBC-3.0_$last_month* destination
fi
    
por 12.06.2014 / 18:44