staging.inyokaproject.org

Lokales Verzeichniss auf FTP Server mirroren

Status: Ungelöst | Ubuntu-Version: Ubuntu 5.10 (Breezy Badger)
Antworten |

Digifreax

Anmeldungsdatum:
7. September 2005

Beiträge: 13

Ich brauche ein Shellskript, welches ein Verzeichnis (/home/c++) auf einen ftp server lädt (ftp://geekorama.org/httpdocs/c++).
Wie kann ich so etwas realisieren? Für Tipps wäre ich sehr dankbar.

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2169

In die Datei $HOME/.netrc (des Benutzers, der das FTP-Skript dann regelmäßig ausführen wird) folgendes eintragen:

machine <host.domain.top-level-domain>
login <benutzername>
password <passwort>

Die Datei darf nur für den Benutzer selbst lesbar und schreibbar sein (600). Dann brauchst du das Passwort nicht in das Skript zu schreiben.
Anschließend erstellst du ein Skript:

#!/bin/bash

cd /home/
ftp host.domain.top-level-domain ...
# und nun deine commands, je nachdem, was du erreichen willst, dazu kannst du die ftp-manpage lesen


mget-Befehl im FTP-Protokoll arbeitet m.W. nicht rekursiv, sodass man eine Schleife bauen müsste, in der immer wieder eine FTP-Connection auf- und abgebaut wird. Dann könntest du auf der Gegenseite die lokal vorhandenen Verzeichnisse erstellen.
Daher ist es sinnvoll, wenn du vor der Übertragung das Verzeichnis in ein tar.gz-Archiv packst und anschließend per FTP überträgst.

#!/bin/bash
cd /home
tar -cvzf c++.tar.gz c++/
ftp host.domain.top-level-domain << EOF
put c++.tar.gz
EOF

Auf der Gegenseite dann entpacken.

Oder wenn alle Dateien im Verzeichnis c++ sind, dann geht auch etwas in dieser Art

#!/bin/bash

cd /home/c++/
ftp host.domain.top-level-domain << EOF
mput *
EOF


Eventuell musst du anstatt "ftp host.domain.top-level-domain" "ftp -i -n host.domain.top-level-domain"

Dejan

Digifreax

(Themenstarter)

Anmeldungsdatum:
7. September 2005

Beiträge: 13

Danke! Das Skript funktioniert in folgender Form:

#!/bin/bash

cd /home/digifreax/c++/

ftp -i domain << EOF
cd httpdocs
cd c++
mput *
EOF

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2169

Bitte schön!

Jetzt solltest du nur noch den Thread als gelöst markieren 😉

gummibaerchen

Anmeldungsdatum:
23. März 2006

Beiträge: 556

Hi,

habe auch das gleiche Anliegen, nur möchte ich das Script portabel haben.

Habe es jetzt mit Ruby gelöst, weil nur das im WIKI steht, wie kann ich das aber so mit Bash machen, das Username und Passwort in der gleichen Datei stehen?

Wenn ich Bilder hochladen muss ich den Modus auch noch auf "binary" stellen oder?

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2169

gummibaerchen hat geschrieben:

wie kann ich das aber so mit Bash machen, das Username und Passwort in der gleichen Datei stehen?
Wenn ich Bilder hochladen muss ich den Modus auch noch auf "binary" stellen oder?

man ftp oder nutze GOOGLE 😉 Suchbegriff "ftp passwort im skript"
Bilder sind binäre Dateien ⇒ Antwort ist JA

gummibaerchen

Anmeldungsdatum:
23. März 2006

Beiträge: 556

dehru hat geschrieben:

gummibaerchen hat geschrieben:

wie kann ich das aber so mit Bash machen, das Username und Passwort in der gleichen Datei stehen?
Wenn ich Bilder hochladen muss ich den Modus auch noch auf "binary" stellen oder?

man ftp oder nutze GOOGLE 😉 Suchbegriff "ftp passwort im skript"
Bilder sind binäre Dateien ⇒ Antwort ist JA

Darauf bin ich auch schon gekommen\^^

Habe auch 2 Dinge, die theoretisch laufen sollten, es aber aus irgendeinem Grund nicht tun. Naja ich werd mal weiter gucken.

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2169

gummibaerchen hat geschrieben:

Habe auch 2 Dinge, die theoretisch laufen sollten, es aber aus irgendeinem Grund nicht tun. Naja ich werd mal weiter gucken.

Was läuft denn nicht? Fehlermeldung?

gummibaerchen

Anmeldungsdatum:
23. März 2006

Beiträge: 556

Hmm so connect schein zu gehen. Fehlermeldung lautet:
Could not create file.

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2169

gummibaerchen hat geschrieben:

Fehlermeldung lautet: Could not create file.

Schreibrechte auf dem Zielrechner bzw. Quell-Rechner, kein freier Platz mehr, ... je nachdem ob du get oder put machst!
Daher solltest du die Fehlermeldung aus der Konsole bzw. aus dem Log-File posten.

Antworten |