
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 -rt
ví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