DSM 7.0 Kein (s)FTP mehr auf DSM 7.0? - Was nun?

hamburgerjung21

Benutzer
Mitglied seit
11. Aug 2021
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Hi,

ich benutze seit Jahren ein Script, um Daten per FTP herunterzuladen und auf einen Backupserver wieder hochzuladen.
Das sieht so aus:

Aufruf script im Aufgabenplaner mit

/volume1/Backups/BackupScript/FTPSBackup.sh $benutzer $ftpserver $ftpuser $ftppass $ftproot $ftpconnections

Script:

#!/bin/sh # Übergabeparamater definieren benutzer=$1 ftpserver=$2 ftpuser=$3 ftppass=$4 ftproot=$5 ftpconnections=$6 # Diskstation Einstellungen datum=`date +%y-%m-%d` backupverzeichnis=/volume1/Backups-benutzern/$benutzer # FTP Upload Einstellungen ftpbackupserver=blabla.mein-server.de ftpbackupbenutzer=hierderbenutzer ftpbackuppasswort=hierdaspasswort ftpbackupverzeichnis=/backups/$benutzer # ZIP Passwort zippass=hier ein passwort zum zippen # ============ PROGRAMMCODE ============ # Fehlerüberprüfung: Sind alle Übergabeparamater übergeben worden? if [ $# -ne 6 ] then exit fi # Log Start touch /volume1/Backups-benutzern/BackupScript/log/$datum-$benutzer-1-start.log # Dateien downloaden in temporäres Verzeichnis # wget -N -r -l 12 --directory-prefix=$backupverzeichnis/$datum-$benutzer/ --ftp-user=$ftpuser --ftp-password=$ftppass ftp://$ftpserver$ftproot lftp -u $ftpuser,$ftppass -p 21 $ftpserver -e "set ftp:ssl-allow off; mirror --exclude log/ -P $ftpconnections $ftproot $backupverzeichnis/$datum-$benutzer/; --exclude-glob '*.log*' --exclude-glob '*.zip*'; quit" touch /volume1/Backups-benutzern/BackupScript/log/$datum-$benutzer-2-downloadfertig.log # ZIP erstellen cd $backupverzeichnis ZIPFILE="${datum}_${benutzer}.zip" zip -r -0 --password $zippass $ZIPFILE $datum-$benutzer/ touch /volume1/Backups-benutzern/BackupScript/log/$datum-$benutzer-3-zipfertig.log # ZIP per FTP auf Backupserver laden curl --ftp-create-dirs -T $backupverzeichnis/$ZIPFILE -u $ftpbackupbenutzer:$ftpbackuppasswort ftp://$ftpbackupserver$ftpbackupverzeichnis/ # temporäres Verzeichnis löschen #if [ -d $backupverzeichnis/$datum-$benutzer/ ] && [ -f $backupverzeichnis/$ZIPFILE ] # then rm -R $backupverzeichnis/$datum-$benutzer/ # else exit #fi # Log Start touch /volume1/Backups-benutzer/BackupScript/log/$datum-$benutzer-4-ende.log


Soweit klar?

Nun hab ich ein ganz dummes Problem bezüglich der letzten Aktion:
curl --ftp-create-dirs -T $backupverzeichnis/$ZIPFILE -u $ftpbackupbenutzer:$ftpbackuppasswort ftp://$ftpbackupserver$ftpbackupverzeichnis/

ich habe auch schon probiert (wobei ich mir schon dachte, das das nicht zugelassen wird)
curl --ftp-create-dirs -T $backupverzeichnis/$ZIPFILE -u $ftpbackupbenutzer:$ftpbackuppasswort sftp://$ftpbackupserver$ftpbackupverzeichnis/

Ich bekomme im Log aber das hier
curl: (1) Protocol "ftp" not supported or disabled in libcurl
oder eben
curl: (1) Protocol "sftp" not supported or disabled in libcurl


Nun habe ich im Forum das hier gefunden und mir daraufhin die Zeile so umgebastelt:

lftp -u $ftpbackupbenutzer,$ftpbackuppasswort $ftpbackupserver -e "put $backupverzeichnis/$ZIPFILE ; exit"

aber auch das geht nicht, ich bekomme im Log File keinen Fehler mehr, aber es lädt auch nicht hoch (grübel).

Jetzt bin ich gerade etwas ohne Ideen, zumal ich kein Programmierer bin...
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Leider ist wohl mit der aktuellen libcurl unter DSM 7 das Protokoll "ftp" verschwunden. Vermutlich bewusst nicht mit hinein kompiliert worden.
Wenn man mit curl --version die curl version prüft bekommt man folgende Ausgabe:

curl 7.75.0 (x86_64-pc-linux-gnu) libcurl/7.75.0 OpenSSL/1.1.1k zlib/1.2.11 c-ares/1.14.0 nghttp2/1.41.0
Release-Date: 2021-02-03
Protocols: http https
Features: alt-svc AsynchDNS Debug HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL TrackMemory UnixSockets


Hier sieht man, dass nur die beiden Protokolle wie oben aufgeführt verfügbar sind.

Das mit lftp sollte auch bei dir auf deinem System funktionieren.
Ich habe das ganze selbst einmal verifiziert und kann bestätigen dass es damit auch klappt.

Ich habe folgenden Befehl verwendet:
lftp ftp://<SERVER>/<ZIELVERZEICHNIS> -e "put <DATEI>; exit"

Welchen Fehler bekommst du denn?
Kann es sein dass in deinem Fall $backupverzeichnis auf dem Zielserver noch nicht existiert und dies erst erstellt werden muss?
Denn mit dem vorherigen Befehl curl wurde der Parameter --ftp-create-dirs Create the remote dirs if not present verwendet, welcher das Verzeichnis erstellt sollte es nicht existieren.
Ich gehe stark davon aus dass dies hier der Fall ist mit dem lftp Befehl.


EDIT:
lftp -u $ftpbackupbenutzer,$ftpbackuppasswort $ftpbackupserver -e "put $backupverzeichnis/$ZIPFILE ; exit"
Müsste es nicht so heißen:

lftp -u $ftpbackupbenutzer,$ftpbackuppasswort ftp://$ftpbackupserver$ftpbackupverzeichnis -e "put $backupverzeichnis/$ZIPFILE ; exit"
 
Zuletzt bearbeitet:
  • Like
Reaktionen: hamburgerjung21

hamburgerjung21

Benutzer
Mitglied seit
11. Aug 2021
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
EDIT:

Müsste es nicht so heißen:

lftp -u $ftpbackupbenutzer,$ftpbackuppasswort ftp://$ftpbackupserver$ftpbackupverzeichnis -e "put $backupverzeichnis/$ZIPFILE ; exit"

Ja super, genau das wars - ich weiß nun auch, warum ich gestern Abend keine Fehlermeldung mehr hatte - die Datei wurde korrekt hochgeladen, nur nicht an den erwarteten Ort ^^
Vielen Dank.
 

bfpears

Benutzer
Mitglied seit
09. Feb 2009
Beiträge
449
Punkte für Reaktionen
29
Punkte
28
Moin,
da ich noch nie FTP über das Terminal benutzt habe:
aber:
ftp:ssl-allow off;
heißt doch das alles im Klartext über die Leitung geschickt wird und kein FTPS (FTP mit SSL) genutzt wird,
oder liege ich da falsch!?

Bei SFTP wird ja ein SSH Tunnel genutzt, ist hier ja auch nicht der Fall.
 


 

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