FTP Dateien nach download löschen (via SSH script)

Status
Für weitere Antworten geschlossen.

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

seit Stunden suche ich nach einer Lösung für mein Problem. Ich bin ein absoluter Anfänger was das scripten angeht, versuche aber immer selbst was anzueignen!... Nun benötige ich Eure Hilfe ;-)

Hintergrund:
Auf einen FTP-Server (Fritzbox USB-Stick) werden Daten bereitgestellt, welche täglich automatisch auf meine DS214 verschoben werden sollen. Nach Abruf sollten diese allerdings auch automatisiert gelöscht werden, was ich eben nicht hinbekomme...

Beide Geräte sind im selben Netz.

Mein gebasteltes Script sieht wie folgt aus und wird am Ende des Tages einmalig durch den Aufgabenplaner durchgeführt:
#!/bin/sh
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
cd /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
wget -b --quiet --ftp-user=USER --ftp-password=PASS ftp://192.168.0.1/Storage-01/EXPORT/*.*

Ich finde leider keinen Befehl, welcher die Daten im Ordner EXPORT nach dem download löscht.

Könnt Ihr mir helfen?

PS: Geht eine Abholung der Daten auch via SMB?
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.257
Punkte für Reaktionen
920
Punkte
174

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo Ulfhednir,

danke für die schnelle Antwort. Das habe ich bereits versucht, funktioniert allerdings im Remote-Zugriff nicht - geht nur local...
 

thomsonit

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Hallo,

um Dateien auf einem FTP zu löschen muss man 'delete' verwenden. 'rm' funktioniert dort nicht. Dein Script zieht per wget alle Dateien aus dem FTP und trennt danach direkt die Verbindung, dann kann man auch nichts mehr löschen. Es muss also eine neue Verbindung aufgebaut werden und dann kann man multiple Dateien per 'mdelete' löschen.

Rich (BBCode):
ftp ftp://USER:PASS@HOST:PORT
cd /remote/path
mdelete *.jpg *.txt *.whatever
quit

Um sich doppelte Verbindungen zu sparen, könnte man so vorgehen:

Rich (BBCode):
#!/bin/sh 
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
cd /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
ftp -i ftp://USER:PASS@192.168.0.1/
cd /Storage-01/EXPORT/
mget *
mdelete *
quit

Vielleicht ist das ein Anfang. Um die Ausgabe ruhig zu bekommen könnte ein -V funktionieren, aber da empfehle ich einfach mal die Manpage von FTP, das habe ich gerade nicht im Kopf.

Gruß ThomsonIT
 

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo ThomsonIT,

vielen Dank für Deine Hilfe!
Habe es entsprechend eingesetzt und getestet.

Was mache ich falsch?
Die Fehlermeldung in der Konsole lautet:

root@NAS:~# ftp -i ftp://USER:PASS@192.168.0.1
-ash: ftp: command not found
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.016
Punkte für Reaktionen
272
Punkte
393

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo Götz,

vielen Dank für die Lösung! In der Konsole funktioniert es wie soll!

Leider bekomme ich es aber im Script nicht umgesetzt, da bekomme ich die Fehlermeldungen:
lftp: invalid option --'c'
lftp: invalid option --'E'
lftp: quit: Name or Service not known

Rich (BBCode):
#!/bin/sh 
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
cd /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
lftp ftp://USER:PASS@192.168.0.1/Storage-01/EXPORT/
lftp mget -c, -E, *.*
lftp quit

(-E steht für löschen nach dem erfolgreichen Transfer)

Wie muss ich das Script richtig aufbauen?
 

thomsonit

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Mit lftp kannst du folgendes versuchen:

Rich (BBCode):
#!/bin/sh 
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
lftp ftp://USER:PASS@192.168.0.1/
mget -E -O /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum/ /Storage-01/EXPORT/*
quit

'mget -E' löscht die Quelldateien nach erfolgreichem Transfer direkt.
 

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo ThomsonIT,

Danke für die Vereinfachung des Scripts.

Über den Aufgabenplaner der Synology bekomme ich folgende Fehlermeldung:
Sehr geehrter Benutzer,

Aufgabenplaner hat eine geplante Aufgabe abgeschlossen.

Aufgabe: Daten abholen
Startzeit: Thu, 17 Aug 2017 12:38:40 GMT
Stoppzeit: Thu, 17 Aug 2017 12:38:41 GMT
Aktueller Status: 127
Standardausgabe/Fehler:
/volume2/archiv/Script/MoveFTP2OneDrive.sh: line 5: mget: command not found
/volume2/archiv/Script/MoveFTP2OneDrive.sh: line 6: quit: command not found


Mit freundlichen Grüßen
Synology DiskStation
Rich (BBCode):
#!/bin/sh 
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
lftp ftp://USER:PASS@192.168.0.1/
mget -E -O /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum/ /Storage-01/EXPORT/*
quit

Ich weiß leider nicht, wie ich mget und quit mit lftp im Script in Verbindung bringe...
Gebe ich es in der Konsole ein, dann funktioniert es einwandfrei!

Wo liegt mein Fehler?
 

rooferl

Benutzer
Mitglied seit
16. Aug 2017
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Juhu... Jetzt habe ich es!

DANKE für Eure Hilfe!

Rich (BBCode):
#!/bin/sh 
datum=`date +%Y-%m-%d`
mkdir /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
cd /volume2/Cloud\ Storage/One\ Drive/IMPORT/$datum
lftp <<EOF
open -u USER,PASS 192.168.0.1
cd /Storage-01/EXPORT/
mget -c -E *.*
quit 0
EOF
exit
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat