PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FTP Automatic Copy



Blackbenji
20.03.12, 10:25
Moin zusammen,

ich habe einen Server gemietet, den ich als SVN benutze.
Dort habe ich mir ein Script erstellt, welches jede Nacht um 2 Uhr Dumps erstellt und die Dumps dann zipt. Nachdem die Dumps gezipt wurden werden die nicht gezipten Dumps gelöscht, sodass ich nur noch die tar Archive habe.

Wenn dies geschehen ist möchte ich mich zu meinem FTP Server verbinden, der bei mir zuhause mit meinem Netzwerk verbunden ist.
Vom SVN Server sollen dann die tar Archive auf den FTP Server kopiert werden.

Durch den Command:


ftp FTP HOST

werde ich dazu aufgefordert meinen Login und das Password einzugeben und die Verbindung wird auch hergestellt.

In dem Script möchte ich nun, dass er sich automatisch zu dem FTP Server verbindet und sich auch automatisch anmeldet.
Zuletzt sollen dann halt wie schon erwähnt die tar Archive auf den FTP kopiert werden.


Was ich bei Google gefunden und ausprobiert habe hat leider nicht funktioniert, deswegen wollte ich wissen, ob dies überhaupt geht?
Falls ja wäre ich über Hilfestellungen sehr dankbar. :)

marce
20.03.12, 10:30
Geht problemlos. Suchstichworte wären z.B. here-Document, ftp-Scripting, ... - oder auch alternative ftp-Clients, die diesbezüglich etwas eleganter sind als das "rudimentäre" Konsolen-FTP.

Alternativ - poste, was Du probiert hast und was dabei nicht funktioniert hat. "Es hat nicht funktioniert" ist von der Datenbasis für konkrete Hilfe ein wenig - dürftig.

Blackbenji
20.03.12, 11:28
Im Anhang habe ich mein akutelles Script angehängt.
Dort fehlt halt noch die Verbindung und der automatische login und am Schluss der Kopiervorgang.

DrunkenFreak
20.03.12, 11:58
Sowas postet man als Text in Code-Tags.

Es könnte die Daten $HOME/.netrc helfen.

Blackbenji
20.03.12, 15:04
Ich glaube, dass Problem liegt einfach nur daran, dass nicht automatisch zum FTP Server verbunden wird.

Manuell habe ich es jetzt so gemacht:

1. Zuerst einmal verbindet man sich zum FTP Server.

ftp HOST

2. Wird man nach dem Usernamen und Passwort gefragt.

3. Das Verzeichnis dass man bei lcd angegeben hat auf dem lokalen Server( auf dem das Script ausgeführt wird). Somit hat man immer die aktuellen Files auf dem FTP Server.


lcd /var/www/svndumps/

4. Gibt das Verzeichnis auf dem FTP Server an


cd /Backup/SVN


5. Der Befehl prompt bewirkt, dass man nicht manuell das Einverständiss fürs Hochladen geben muss.


prompt

6. kopiert alle Dateien mit dem Typ "tar" vom Quellenverzeichnis (lcd) zum Zielverzeichnis /Backup/SVN


mput "*.tar"



7. Beendet die FTP Verbindung


bye


Als die Schritte ausgeführt wurden hat es wunderbar geklappt.
Es klappt allerdings nicht, wenn ich es im Script habe und ausführen möchte.
Brauche ich da noch extra Befehle?

kreol
20.03.12, 15:39
Warum denn mit Gewalt per ftp? Mit rsync oder scp ist das deutlich einfacher.

Und marce hat es schon erwähnt: "Klappt nicht" ist sowas von desinformativ...

Kreol

DrunkenFreak
20.03.12, 16:56
Nicht nur das. Passende Informationen werden direkt mit überlesen, weil sie nicht auf dem Silbertablet geliefert wurden.

kreol
20.03.12, 17:04
Nicht nur das. Passende Informationen werden direkt mit überlesen, weil sie nicht auf dem Silbertablet geliefert wurden.Naja, #4 ist leider fehlerbehaftet. Du meinst wohl "Es könnte die Datei $HOME/.netrc helfen" und nicht "Es könnte die Daten...". Aber so eine Transferleistung kann man nicht einfach voraussetzen.

Könnte ja auch "es könnte(n) die Daten (in) /$HOME/... helfen" gemeint sein oder was auch immer.

Wer gelesen und verstanden werden will sollte halt auch fehlerfrei schreiben... :p

Kreol

DrunkenFreak
20.03.12, 17:15
Drei fehlende Buchstaben gegen einen Feherhaften...wer das nicht auseinander halten kann, besonders wenn nur auf eine Datei hingewiesen wird, hat irgendwie nicht alles richtig gemacht :)

Newbie314
20.03.12, 21:25
Anbei ein Skript mit dem ich früher eine Datei per FTP auf einen Server hochgeladen, dann unter anderem Namen runtergeladen habe um dann per md5sum zu kontrollieren ob sie oben richtig ankam:

(War ein .pdf, daher "bin")



#!/bin/sh
HOST='www.mein_ftp_host.de'
USER='Newbie314'
PASSWD='unsicheres_Passwort'
FILE='Schnurzelpurz.pdf'
CHECKFILE='Schnurzelpurz2.pdf'

ftp -n -A $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
bin
delete $FILE
put $FILE
chmod 644 $FILE
get $FILE $CHECKFILE
quit
END_SCRIPT
md5sum $FILE
md5sum $CHECKFILE
exit 0


.. vielleicht kannst du dir mit dieser Vorlage das zusammenbasteln was du benötigst.

Blackbenji
21.03.12, 10:14
Mein Script sieht folgendermaßen aus:


#!/bin/sh
USER='anon'
PASSW='' //USER braucht kein Passw


ftp -n HOST
quote USER $USER
quote PASSW $PASSW

lcd cd /var/www/svndumps/
cd /Backup/SVN
prompt
mput "*.tar"
bye


Wenn ich diese Befehle manuell eingebe, allerdings ohne -n nur
ftp HOSTgeht es problemlos und die Archive werden kopiert.


Wenn ich das Script ausführe kommt folgende Meldung:


Connected to FTP HOST (IP ADRESSE)
220 NASFTPD Turbo Station Server (IP Adresse)
Remote System is UNIX
Using binary mode to Transfer files.


Auf dem ersten Anschein denkt man es wurde auf eine Verbindung aufgebaut, allerdings ist dies nicht der Fall.


ftp > ls

Ergebnis:


530 Please login with USER AND PASS
Passive mode refused.

Blackbenji
21.03.12, 15:52
Hab alles hinbekommen!
Danke für die Hilfe :)