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

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

rooferl

Benutzer
Registriert
16. Aug. 2017
Beiträge
6
Reaktionspunkte
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?
 
Hallo Ulfhednir,

danke für die schnelle Antwort. Das habe ich bereits versucht, funktioniert allerdings im Remote-Zugriff nicht - geht nur local...
 
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
 
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
 
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?
 
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.
 
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?
 
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