ubuntuusers.de

mit lftp rekursiv auf ftp-Server löschen

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

mgolbs

Anmeldungsdatum:
11. Januar 2009

Beiträge: 269

Wohnort: Tirschenreuth - Löbau

Hallo,

ich möchte gern auf einem ftp-server rekursiv per lftp *.gz's löschen. Mit dem Ansatz curlftpfs wäre dies wohl recht einfach:

1
find . -type f -name '*.gz' -delete;

Leider greift bei mit so ein curlftpfs IO Bug im Zusammenspiel mit dem MS-FTP System. Bei einem Debian 6 ftp Server läuft curlftpfs seit Jahren produktiv und stabil. So habe ich für die Arbeit mit dem externen MS ftp-Server auf lftp umgestellt.

Die Doku zu lftp ist hier: //linux.about.com/od/commands/l/blcmdl1_lftp.htm:

Nur scheint die Befehlsimplementation in lftp etwas anders zu reagieren als per bash.

1
2
3
4
5
#!/bin/bash
lftp username:passwort@ftp.firmax.org -e "find . -type f -name '*.gz' -delete; bye" << EOF
quit
bye
EOF

oder

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
golbs@maschine7:~$ lftp username:passwort@ftp.firmax.org -e "find . -type f -name '*.gz' -delete; bye"
./                                              
./K014/
./K014/8000/
./K014/8000/logs/
./K014/8000/logs/16012500.txt.gz
./K014/8000/logs/16012501.txt.gz
./K014/8000/logs/16012502.txt.gz
./K014/8000/logs/16012503.txt.gz
./K014/8000/logs/16012504.txt.gz
./K014/8000/logs/16012505.txt.gz
./K014/8000/logs/16012506.txt.gz
./K014/8000/logs/16012507.txt.gz
./K014/8000/logs/16012508.txt.gz
./K014/8000/logs/16012509.txt.gz
...
...
./K773/0001/logs/16012600.txt.gz
find: Access failed: 550 CWD failed. "/-type": directory not found.
find: Access failed: 550 CWD failed. "/f": directory not found.
find: Access failed: 550 CWD failed. "/-name": directory not found.
find: Access failed: 550 CWD failed. "/*.gz": directory not found.
find: Access failed: 550 CWD failed. "/-delete": directory not found.
lftp username@ftp.firmax.org:/> 

Da ich nur ein Anwender bin tue ich mich schwer den Fehler zu finden. Über einen Tipp wäre ich sehr dankbar.

Gruß Markus

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Ich würde ncftp nehmen. Dort kannst du dann einfach "rm -rf <dir>" nutzen.

mgolbs

(Themenstarter)

Anmeldungsdatum:
11. Januar 2009

Beiträge: 269

Wohnort: Tirschenreuth - Löbau

Hallo,

vielen Dank für die Information. Habe mich mal etwas durch die Dokus von ncftp gewühlt. Ich möchte nur die *.gz's löschen, andere Dateien und alle Ordnerstrukturen müssen erhalten bleiben. Bin mir nicht sicher ob das mit ncftp so wirklich möglich ist. Werde wohl noch mal den curlftpfs Ansatz fürs löschen ins Spiel bringen müssen.

1
2
ncftpput -u "username" -p "passwort" ftp.firmax.org -X "find . -type f -name '*.gz' -delete" 
geht so leider nicht 

Gruß und Dank Markus

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

mgolbs schrieb:

Ich möchte nur die *.gz's löschen, andere Dateien und alle Ordnerstrukturen müssen erhalten bleiben.

Achso. Das ist per ncftp nicht möglich. Meines Wissens ist das gar nicht per FTP möglich, wenn es nicht einen Server gibt, der das an der Spezifikation vorbei implementiert.

Bin mir nicht sicher ob das mit ncftp so wirklich möglich ist. Werde wohl noch mal den curlftpfs Ansatz fürs löschen ins Spiel bringen müssen.

Hast du die Möglichkeit ein anderes Protokoll zu verwenden? SFTP beispielsweise?

mgolbs

(Themenstarter)

Anmeldungsdatum:
11. Januar 2009

Beiträge: 269

Wohnort: Tirschenreuth - Löbau

Hallo,

vielen Dank für die Informationen. ...SFTP beispielsweise? Das ist eines meiner Probleme. Ist ein MS ftp System mit festgelegten Regeln für alle Sub-Domains. Ich habe das löschen per curlftpfs und

1
find . -type f -name '*.gz' -delete

in den Griff bekommen. Habe jetzt das Einbinden des ftp ins Filesystem per curlftpfs nicht mehr per root cron gemachts, sondern als normaler user. Da kam der IO Fehler erst mal nicht.

Gruß und Dank Markus

Antworten |