Kann ich einen ganzen Ordner per FTP hochladen?
Ich muss einen kompletten Ordner mit FTP hochladen. Gibt es eine Möglichkeit, einen Ordner und seinen gesamten Inhalt auf einmal zu übertragen?
Ich muss einen kompletten Ordner mit FTP hochladen. Gibt es eine Möglichkeit, einen Ordner und seinen gesamten Inhalt auf einmal zu übertragen?
Sie können ncftpput verwenden. Gehen Sie wie folgt vor:
yum ist klein geschrieben.
Alternativ dazu:
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Wenn Sie einen Standard-ftp-Befehlszeilen-Client verwenden, können Sie mit dem Befehl MPUT
alle Dateien übertragen, die zu einem (Shell-glob-artigen) Muster passen, also MPUT *
sendet alle Dateien im aktuellen Verzeichnis. Es gibt auch MGET
zum Abrufen von Dateien, die auf ein Muster passen.
Standardmäßig fragen sowohl MPUT
als auch MGET
vor jeder Datei ab, ob sie übertragen werden soll. Wahrscheinlich möchten Sie die Abfrage mit dem Befehl “PROMPT” ausschalten (kein Argument; es ist ein Umschaltbefehl).
Verwenden Sie einen FTP-Client wie LeechFTP oder FileZilla oder etwas Ähnliches. Viele Leute schwören auf CuteFTP, aber das ist Shareware, soweit ich weiß. Alle unterstützen das Übertragen eines ganzen Ordners einschließlich der Verzeichnisstruktur.
Ich werde eine Antwort anbieten, die - obwohl sie reine Brute-Force ist und nicht im Geringsten elegant - das einzige war, was bei mir auf der Kommandozeile funktionierte. Ich habe eine Liste der Dateien erstellt und sie in ein Skript eingefügt:
die Liste der Dateien generieren:
find my-dir -exec echo "put /Users/username/"{} {} \;
Kopieren Sie sie und fügen Sie sie in das Skript ein:
#!/bin/bash
hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password
binary
cd 123456
{COPY THE LIST HERE}
quit
EOF
Eine einfache Anleitung für andere Windows-Neulinge wie mich, die hier landen:
Der einfachste Weg, einen ganzen Ordner (mit allen Unterordnern und Dateien darin) hochzuladen, ist:
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(als eine Zeile). Beachten Sie, dass:
-R
ist ein Flag für “rekursiv”; es bewirkt, dass der Befehl alle Unterordner rekursiv kopiert /
(Schrägstrich) ist das Stammverzeichnis Ihrer Website C:\yourFolderDirectoryHere\*
wählt alles innerhalb von C:\yourFolderDirectoryHere
ausProbieren Sie dies aus .
Sie können auch programmatisch einen Ordner auf dem Server erstellen , und dann alle Dateien in diesen neuen Ordner hochladen.
Das Zielverzeichnis ist eine Zip-Datei. Sie können die vollständige Zip-Datei mit dem folgenden Code auf den FTP-Server kopieren.
//Taking source and target directory path
string sourceDir = FilePath + "Files\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\ConfigurationFile\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\XmlFile";
string targetDir = FilePath + "Files\Customers\" + CustomerName + "\" + SystemName + "\";
foreach (var srcPath in Directory.GetFiles(sourceDir))
{
//Taking file name which is going to copy from the sourcefile
string result = System.IO.Path.GetFileName(srcPath);
//If that filename exists in the target path
if (File.Exists(targetDir + result))
{
//Copy file with a different name(appending "Con_" infront of the original filename)
System.IO.File.Copy(srcPath, targetDir + "Con_" + result);
}
//If not existing filename
else
{
//Just copy. Replace bit is false here. So there is no overwiting.
File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false);
}
}
FileZilla ist dafür hervorragend geeignet. Wenn Sie nichts herunterladen/installieren möchten, können Sie dies auch mit dem Internet Explorer tun. Gehen Sie in die erweiterten Optionen, und wählen Sie Enable FTP folder view (outside of Internet Explorer)
. Dann können Sie ein Explorer-Fenster auf Ihren FTP-Server richten und Dateien und Ordner per Drag-and-Drop zwischen den Explorer-Fenstern verschieben.
Meine Antwort ist eine Abwandlung von @dgig ‘s Antwort.
Sie können alle Dateien auflisten und in eine Datei speichern (inklusive Put-Befehl):
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
und dann sftp verwenden, um die Datei zu verarbeiten:
sftp -C -b sftpbatchfile.txt name@server
-C
ist für die Komprimierung, -b
ist für die Batch-Datei