Rekursiv hochladen

kevkev

Erfahrenes Mitglied
Hallo,

Wie kann Ich denn mit Linux komplette Ordner _und_ Unterordner auf einen ftp-server uploaden?
Denn mit mput *.* will er nicht :(!

gruß kevin
 
Hi,

ja, ncftp ist genau das was ich suche :)!
Wie kann ich nun ncftp in nem bash script verwenden?
einfach die befehle pro zeile eingeben?

gruß kevin
 
Hi.

:google: Lies dir mal die man-page von ncftpput durch. Da ist ein Beispiel drin:
Code:
You can upload an entire directory tree of files by using the -R flag. Example:

$ ncftpput -R pikachu.nintendo.co.jp /incoming /tmp/stuff
Benutzername und Passwort kannst du auch auf der Kommandozeile übergeben (-u benutzer -p passwort). Dann brauchst du dieses eine Kommando nur noch in dein Shell-Skript einfügen.
 
Hi,

Also der Upload von dateien geht, aber beim uploaden von Ordner hängt das Script.
Ich gebe auch -R mit an, und das ziel und quellverzeichniss ist auch ein verzeichniss, keine datei.

Ich gebe vor dem start des scripts mit echo "Upload gestartet" aus, danach geht nichts mehr, ich kann aber noch abbrechen mit STRG + C.

Woran kann das liegen?

gruß kevin
 
Hi,

Es geht doch, Ich hab als Quellverzeichniss "/" angegeben, und das ist ja der root xD!

es geht, super :)!

Aber eine Frage habe Ich noch, die Ich nicht im manual von ncftpput gefunden habe:
wie gebe Ich an, das die Dateien nicht überschrieben werden sollen, wenn die die gleiche dateigröße haben?

gruß kevin
 
Zuletzt bearbeitet:
kevkev hat gesagt.:
wie gebe Ich an, das die Dateien nicht überschrieben werden sollen, wenn die die gleiche dateigröße haben?
Das geht nicht (jedenfalls nicht mit ncftp soweit ich weiß). FTP ist eben keine Backup-Lösung oder Mirror-Werkzeug sondern nur ein Datei-Transfer-Programm. Es gibt da andere FTP Clients die das unterstützen (z.B. Kermit FTP Client)

Alternativ könntest du dir eine Lösung mit find basteln. Das heißt du merkst dir wann du das letzte Mal Dateien hochgeladen hast (mit Hilfe einer Datei), suchst dann mit find alle Dateien deren Modifikationszeit jünger ist als die Zeit des letzten Uploads und lädst dann nur diese Dateien hoch.

Aber ich hab mir grad mal Kermit FTP genauer angeschaut. Das Teil ist ziemlich gut und macht wohl alles was du willst:

http://www.columbia.edu/kermit/ftpscripts.html hat gesagt.:
Or suppose you want to send all the files in an entire directory tree, which can include any combination of text and binary files, and have the same directory tree replicated on the FTP server, even if it is on a different operating system:

ftp put /recursive *

Now suppose that later, you want to refresh the same directory tree by uploading only those files that changed since last time:

ftp put /recursive /update *
/edit: Der Nachteil ist nur, das bei dieser Methode Kermit sich alle Dateien auf dem Server angucken und mit den lokalen vergleichen muß. Bei der Methode mit find braucht man das nicht. Allerdings könnte es zu Problemen führen wenn Dateien auf dem Server geändert werden - die würden dann nicht unbedingt überschrieben.
 
Zuletzt bearbeitet:
Zurück