# Rekursiv hochladen



## kevkev (11. August 2005)

Hallo,

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

gruß kevin


----------



## JohannesR (12. August 2005)

Ich würde ncftp verwenden und put -R ... ausprobieren. Aber auch mput sollte -R (Rekursiv) kennen.


----------



## kevkev (24. August 2005)

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


----------



## deepthroat (24. August 2005)

Hi.

 Lies dir mal die man-page von ncftpput durch. Da ist ein Beispiel drin:
	
	
	



```
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.


----------



## kevkev (24. August 2005)

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


----------



## kevkev (24. August 2005)

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


----------



## deepthroat (25. August 2005)

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 *
> 
> ...


/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.


----------



## kevkev (25. August 2005)

Hi,

Danke, werd mir das mal anschauen !

gruß kevin


----------

