Copiando los archivos más nuevos

Copiando los archivos más nuevos

Tenemos un script en ejecución que recoge el informe generado mensualmente en servidores remotos. Estaba tratando de encontrar una manera de obtener el archivo más reciente únicamente de los servidores remotos. ¿Encontrará trabajo en guión o eso es una mala práctica?

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

Formato de archivo = nombredelservidor_BBC-3.0_2014-06-04_164510_.txt

Respuesta1

Puede ejecutar ls -rtvía SSH en el servidor dentro del directorio para averiguar el último archivo modificado (según su fecha de última modificación en lugar del nombre del archivo)

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

Respuesta2

Sugiero averiguarlo validando tu fecha y tener en cuenta la última copia de seguridad, por ejemplo:

#!/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

información relacionada