
Wir haben ein Skript ausgeführt, das den monatlich auf Remote-Servern generierten Bericht abruft. Ich habe versucht, eine Möglichkeit zu finden, nur die neueste Datei von den Remote-Servern abzurufen. Funktioniert das im Skript oder ist das eine schlechte Vorgehensweise?
for host in "${hosts[@]}"; do
scp "$host":"$remote_path" "$local_target_dir"/filename."$host"
done
Dateiformat = Servername_BBC-3.0_2014-06-04_164510_.txt
Antwort1
Sie können ls -rt
per SSH auf dem Server im Verzeichnis eine Abfrage ausführen, um die zuletzt geänderte Datei zu ermitteln (basierend auf dem letzten Änderungsdatum statt auf dem Dateinamen).
fileToCopy=$(ssh "$host" "cd $remote_path && ls -rt | tail -1")
scp "$host":"$remote_path"/"$fileToCopy" "$local_target_dir"/filename."$host"
Antwort2
Ich schlage vor, dies herauszufinden, indem Sie Ihr Datum validieren und das letzte Backup berücksichtigen, zum Beispiel:
#!/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