PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ftp download automatisiert (zsh)



deac
08-02-2002, 15:30
Ich möchte ein Verzeichnis herunterladen, welches wieder Unterverzeichnisse bietet.
Ich habe bisher immer das Verzeischniss in gepackter Form vom Server angefordert, doch bei einem Abriss der Verbindung, muss der Download von neuem beginnen. Das ganze habe ich mit wget direkt gemacht.
Mit dem MidnightCommander ist es möglich Verzeichnisse herunterzuladen, doch dieser Fragt wegen jedem Mist nach, was er machen soll, wenn dies, oder jenes eintritt. MC ist damit auch weg.
Ich hab ISDN und bei Abrissen ist das sehr ärgerlich, da ich neu anfangen muss. Bei großen Datenmengen ist das sogar zu teuer sonst.

Nun hab ich vor, ein Script zu schreiben, um das Herunterladen von Verzeichnissen zu automatisieren. Dafür bietet sich zsh geradezu an, da ich zsh schon sehr gewöhnt bin und zsh schon immer auch für ftp benutze, wie auch sonst als Shell.
Das Problem nun ist, wie erkennt ein Script, ob in der Dateiliste, die ich per zfls anfordere, ob es ein Verzeichnis ist? Mit zfls -l bekomme ich zwar auch die Daten dazu, doch kann nur ich geistig realisieren, dass es sich um Verzeichnisse handelt, bei bestimmten Dateien.
Oder gibt es ein dierektes ftp-Komando, um den Dateitypen zu erfragen?

Hinzu kommt auch noch, dass zfls nur die Dateien anzeigt, die nich versteckt sind, sprich ohne Punkt am Anfang des Namens. Das ist durchaus sinnvoll, wenn ich diese auch unberücksichtigt haben möchte, doch das möchte ich selbst entscheiden können, in dem ich das Script dem Entsprechend anpasse.

fork
08-02-2002, 18:18
auf meinem lokalen Linux rechner zeigt das schon alles an:



ftp localhost
...
ftp> ls -la
-rw-r--r-- 1 tobias users 1101 Feb 28 1999 .xserverrc.secure
-rwxr-xr-x 1 tobias users 2804 Feb 28 1999 .xsession
-rw------- 1 tobias users 359 Feb 8 19:08 .xsession-errors
drwxr-xr-x 2 tobias users 4096 Jan 22 09:41 .xvpics
-rw-r--r-- 1 tobias users 43 Feb 7 04:37 7m314anu.bin
-rw-r--r-- 1 tobias users 69632 Jun 28 2000 BURNER.EXE


zu mc:

F9 -> Optionen -> Nachfragen reicht nicht?

deac
09-02-2002, 12:28
Aber ich benutze doch garnicht ftp, sondern zsh, um mich zuverbinden, mit dem Server.

Ich versuche aber mal die Option -a. Ich vermute, es gelten die gleichen Regeln bei zfls, wie bei ls.;) Dann vereinfacht das die Sache genzschön.

fork
09-02-2002, 16:13
Sorry, dachte zsh ist eine Shell.

Gruß
Tobias

deac
09-02-2002, 17:20
zsh ist eine shell!;)

deac
11-02-2002, 10:32
Wie ich sehe, arbeitet hier wohl leider keiner mit der zsh.:(

deac
11-02-2002, 13:45
Nach dem ich etwas gesucht habe, was zwar sehr lange dauerte, bin ich fündig geworden und konnte alle Probleme lösen. Hier ist das fertige Script für die, die es vielleicht noch brauchen können.


#!/usr/bin/zsh

HOST=$1
USER=$2
PWD=$3
shift 3

function get_files ()
{
zfls -la $* | while read -rA line ; do
if [ "${line[9][0]}" != '.' ] ; then
echo -n "${line[9]}\t"
if [ "${line[0][0]}" = 'd' ] ; then
zfcd "${line[9]}"
mkdir "${line[9]}"
cd "${line[9]}"
get_files "${line[9]}"
zfcd ..
cd ..
else
zfget "${line[9]}"
fi
fi
done
}

zmodload zsh/zftp
autoload -U zfinit
zfinit -n
zfopen $HOST $USER $PWD

get_files $*

zfclose
exit 0


Jetzt werde ich ein Script zum Spiegeln von ftp-Servern, die nicht selbst Scripts ausführen können, schreiben. Das wird aber schwieriger.