Automatischer Upload und Packen

NiclasM

Enthusiast
Thread Starter
Mitglied seit
06.02.2007
Beiträge
4.331
Ort
Dortmund
Hi


Undzwar bin ich gerade dabei zu versuchen ein Script zu bauen wo man 1. einen ordner eingibt,
2. packt rar das auf ca. 50MB
3. Packt die gepackten 50MB rars in jeweil 100 MB parts
Uploadet dass auf einen FTP und löscht dann automatisch die gepackten sachen nach dem Upload.

Könnte mir woas wer machen ? Ich bekomms einfach nicht hin..

bin soweit:

Code:
#!/bin/sh
$datei
$name
$name2
$name3
echo    "Bitte Datei angeben"
read datei
echo    "Bitte Namen für RAR angeben"
read name
rar a -v52600 $name $datei
echo    "Part 1 erfüllt"
echo    "Bitte Datei angeben"
read $datei2
echo    "Bitte namen für RAR angeben"
read $name3
rar a -v102426 $name3 $datei2
echo    "All right!"

Dann fehlt noch der Upload mit ncftp

befehl:

ncftp <FTPSERVER>
put $datei
exit
echo "Finish"
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich kenne mich mit shell scripten nicht gut aus deswegen ;)

Es müssen einfach 2 RAR sein , warum will ich nicht weiter erläutern
 
Eigentlich ist das recht einfach was du versuchst, aber so ein Script zu basteln dauert schonmal ne Weile, weil man hauptsächlich probiert und kleine Fehler ausbügelt. Gegen Geld würd ichs machen ...

Es lohnt sich auf jeden Fall sich mal etwas näher mit Shellscripts auseinanderzusetzen. Man braucht nicht viel zu lernen um wirklich viele Dinge zu automatisieren. Auf all meinen Rechnern laufen zig Scripts im Hintergrund und erleichtern das Leben :-)
 
Ne du, hatte gedacht dass es evtl. nur noch paar kleinigkeiten sind aber habe hier frisch das buch : Shell Programmierung von Galileo Computerung und ab morgen hab ich ferien , dann wird ordentlich gearbeitet. ;)
 
Na dann, frohes Fest :-)

Und lies dir vor allem mal die If-then und while-do Seiten durch..
 
Ich wills jez wissen ;)

Also bin so weit :

#!/bin/sh

$ordner
$rar1
datum=$(date +%T)
monat=$(date +%T+%Y)
echo "Orner Eingeben"
read ordner
rar a -v52400 /opt/tmp/$datum".rar" $ordner
mkdir /opt/ready/$monat
rar a -v102410 /opt/ready/$monat/$monat".rar" /opt/tmp/$datum".*"
echo "Finished creating Packages"
echo $ordner >> /opt/links.txt
echo "- - -" >> /opt/links.txt
ls /opt/ready/$monat >> /opt/links.txt
echo "-------------------" >> /opt/links.txt
echo "-------------------" >> /opt/links.txt
echo "Finish"
rm /opt/tmp/$datum".part*"

Soweit funktioniert das auch.

nur wenn ich jetzt ncftp <ftpserver> und dann die befehle eingeben würde , connectet er zwar zum ftp aber dann hängt er.

haste ne idee?

UND :

Wenn ich ordner mit Leerzeichen zwischen drin eingeben will klappts nicht auchnicht mit "Ornder mit Leer"

UND :

die funktion die erstellen tmp daten zu löschen macht er nicht
Error :
rm: cannot remove `/opt/tmp/22:50:15.part*': No such file or directory

wenn ich dann aber rm /opt/tmp/22:50:15.part*
ausführe gehts ohen probleme ...
 
Zuletzt bearbeitet:
nur wenn ich jetzt ncftp <ftpserver> und dann die befehle eingeben würde , connectet er zwar zum ftp aber dann hängt er.

Erstmal ohne Script einen Test machen, wie es sich verhält.
Vielleicht findet er deine angegebene Datei nicht. Evtl. wegen den Leerzeichen.

Wenn ich ordner mit Leerzeichen zwischen drin eingeben will klappts nicht auchnicht mit "Ornder mit Leer"

Unter Linux gibt es kein "Eigene Dateien", da heisst das dann "Eigene\ Dateien"
Es wird vor jedem Leerzeichen ein \ gemacht. -> Wenns geht unter Linux auf Leerzeichen verzichten

die funktion die erstellen tmp daten zu löschen macht er nicht
Error :
rm: cannot remove `/opt/tmp/22:50:15.part*': No such file or directory

wenn ich dann aber rm /opt/tmp/22:50:15.part*
ausführe gehts ohen probleme ...

Du hast die Anführungszeichen falsch gesetzt in deinem Script in der letzten Zeile.
 
ncftp kenne ich ja.
Eigentlich verbindet er sich dann.
und dann sollte das script ja befehle ausfüren. Tut er aber nicht, werde ich nochmal einzelnt testn...

Wie meinst du die Anführungs Zeichen falsch gesetzt ? Habe ich schon verschiedene sachen getestet.

Edit :

Aus :

#!/bin/sh

ncftp
open ftp://XXX
ls


Wird :

niclas@ThinkPad:~/Scripte/dev$ ./ftp.sh
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).

Copyright (c) 1992-2005 by Mike Gleason.
All rights reserved.

ncftp>

nachdem ich aus ncftp rausgehe, führt er ja die befehle aus...
 
Zuletzt bearbeitet:
Nimm doch einfach direkt ncftpput.

Damit kannst du: ncftpput -u <USER> -p <PASSWORD> <VERZEICHNIS@FTP> <LOKALES VERZEICHNIS>

evtl. noch ein -R einfügen, für rekursives hochladen von kompletten verzeichnissen ;)

mfg
foxxx :wink:
 
Das Problem an der Sache ist, daß dein Shellscript die Befehle nicht an eine andere Shell weitergibt. Denn es öffnet sich ja eine neue, eigene FTP Shell.
Am Besten mal den Tipp von Fox ausprobieren.
 
soweit so gut, danke Foxxx ! Immer wieder eine hilfe ;)

ok also es läuft nur mein Problem ist immer noch dieses:
Manchmal habe ich *.partXXX.rar daten und manchmal *.rar daten
Eigentlich müsste man das doch dann mit $monat"*" lösen können aber er findet dann nie die daten genauso als wenn er dem tmp ordner löschen soll.

könnt ihr mir verraten wie das geht ?
 
Es klappt ! Wunderbar :)

Der befehel " rar a -m0 -rv Data.rar /opt"

erstelle doch ein RAR Paket, mit der Komprimierungs Stufe 0 und mit Recovery Files oder ?

Ok da es jetzt läuft hätte ich ne frage :

uzwar :

wenn ich ls <pfad> >> daten.txt mache, dann wird in die data.txt der inhalt geschrieben.
Könnte man soetwas programmieren, dass das Programm sich die erste Zeile rausholt mit dem Kompletten pfad
die erste zeile dann rauslöscht. mein Script ausfrührt und dann den rest der txt. datei abarbeitet ?

Wenn ja, wie könnte ich das am besten bewerkstelligen. evtl. habt ihr ja ein paar stichwörter
 
Zuletzt bearbeitet:
Kein Problem. Lies dich mal in grep und Schleifen ein, dann kannst du das selber.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh