2017-05-09 4 views
1

Ich weiß, wie alle Samples von einem SFTP-Server auf einmal und mit dem unten genannten Skript herunterladen.Bash Cronjob-Problem zum Herunterladen von Dateien

#download.sh 
sshpass -p password sftp [email protected]:/Files/2017-05-05-00.zip ~/local_machine/2017-05-05/ 
sshpass -p password sftp [email protected]:/Files/2017-05-05-01.zip ~/local_machine/2017-05-05/ 
sshpass -p password sftp [email protected]:/Files/2017-05-05-02.zip ~/local_machine/2017-05-05/ 
................................................................. 
sshpass -p password sftp [email protected]:/Files/2017-05-05-23.zip ~/local_machine/2017-05-05 

Anstatt das Skript ausgeführt wird (download.sh), um alle Dateien auf einmal herunterladen, Wie kann ich die Dateien auf stündlichen Intervall. Zum Beispiel, auf dem obigen Skript

Die erste Zeile in download.sh (Download von 2017-05-05-00.zip) muss bei 7AM geschehen und dies ist nur für die Datei nachschlagen 2017-05-05-00 .zip und Rest der Zeilen sollten nicht nachgeschlagen werden.

Zweite Zeile in download.sh (Download von 2017-05-05-01.zip) muss bei 8AM und So weiter bis 23. Datei passieren.

Wenn einer ausgeführt wird, sollte keine der anderen Dateien nachgeschlagen werden.

Nicht sicher, wie dies mit bash cron job, Irgendwelche Vorschläge, wie dies zu tun, bitte?

+0

Möchten Sie tägliche ** Dateien mit '2017-05-05' im Dateinamen herunterladen? – Cyrus

+0

Schauen Sie sich mit at an, um Ihre Befehle zu verschiedenen Zeiten/Tagen auszuführen –

+0

@Cyrus Nein, für jeden Tag ändert sich das Datum. Der SFTP-Server startet die erste Datei um 7:00 Uhr eines Tages (Beispiel: Für 2017-05-05, Die erste Datei kommt um 7:00 Uhr als 2017-05-05-00.zip) und es wird am nächsten Tag fortgesetzt. Selbst am nächsten Tag (2017-05-06) wird der letzte Dateiname 2017-05-05-23.zip (6 Uhr) und der nächste Tag beginnt die Dateiveröffentlichung (2017-05-06-00.zip) um 7 Uhr . Ich weiß, dies ist eine komplexe Abfragestrategie, die ich brauche, um zu kommen :( – Arun

Antwort

4

dieses Cronjob mit GNU Datum Versuchen:

0 * * * * sshpass -p password sftp [email protected]:/Files/$(date +"\%Y-\%m-\%d-\%H" -d "-7 hours").zip $HOME/local_machine/$(date +"\%Y-\%m-\%d" -d "-7 hours")/" 

Normalerweise ist es notwendig, % mit einem \ in einem Cronjob zu entkommen.

+0

Für die Aufzeichnung wäre das BSD-Datum BSD-Datum "Datum" + \% Y - \% m - \% d - \% H "-v-7H" – ghoti

Verwandte Themen