Kopieren der neusten Dateien

Kopieren der neusten Dateien

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 -rtper 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

verwandte Informationen