Wie FTP mehrere Ordner auf einen anderen Server mit Mput in Unix?


18

Ich bin auf einem Server angemeldet (mit Putty). Von dort aus verbinde ich mich per FTP mit einem anderen Server. Ich möchte mit mput mehrere Ordner vom ersten Server auf den zweiten Server kopieren.

Mögen:

ftp> mput folder1 folder2 folder3

Aber ich bekomme "Ordner1: keine einfache Datei" ... und so weiter. Jeder dieser Ordner hat Unterordner, Dateien (manche binär, manche nicht).

Wie kann ich erreichen, was ich will, ohne das Zeug zu zippen und dann zu übertragen?

Antworten:


19

Befehlszeile FTP ist ziemlich primitiv.

Sie können Dateien / Ordner nicht rekursiv an einen Remotestandort senden.

Wenn Sie eine Verzeichnisstruktur auf der Remote-Seite genauso wie auf der lokalen Seite neu erstellen möchten, müssen Sie mkdirjeden Pfad manuell eingeben und verwenden mput *, um alles in diesem Verzeichnis an die Remote-Seite zu senden.

Zwei Möglichkeiten, um dies zu vereinfachen:

  1. Stoppen Sie die Verwendung des primitiven FTP-Befehls (ncftp ist eine gute Alternative)

  2. Verwenden Sie tar, um die Ordner zu tarieren, die Datei zu senden und auf der anderen Seite zu extrahieren.


1
+1 für tar-> put-> untar
Dave

1
-1 Da die Frage lautet "Wie kann ich erreichen, was ich will, ohne das Zeug zu komprimieren und dann zu übertragen?", Was bedeutet, dass die Person keinen Shell-Zugriff auf den Remote-Computer hat.
Steen Schütt

11

Dies ist mit dem normalen FTP-Programm nicht möglich, da mput keine Rekursion verwendet. Sie könnten ncftp verwenden und dann 'mput -r folder' aufrufen.

Beste Grüße, Fabian


Genau das habe ich kürzlich mit einer RHEL 5-Box gemacht. Im EPEL-Paket heißt die ausführbare Datei ncftpput.
Unterdrückungsfeuer

An der Serverkonfiguration kann nichts geändert werden. Ich bin nur ein Benutzer ...

Das hängt von Ihrem Kunden ab. Nicht auf dem Server.
4.

Ich mache es lieber so. Vielen Dank.
Mojtaba Rezaeian

11

Ich habe ein Bash-Skript erstellt:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

und nannte es mit

find . -type d -exec ./recursive-ftp.sh {} \;

scheint zu funktionieren.


0

Secure Copy scp hat ein rekursives -r-Flag, das Sie möglicherweise nützlich finden.


Frage ist über einfachen FTP-Zugang .. nicht scp / sftp!
Mojtaba Rezaeian

-1

Öffnen Sie die Powershell-CD in dem Verzeichnis, das Sie hochladen möchten, und führen Sie die folgenden Befehle aus:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Fügen Sie die Ergebnisse in Ihr FTP-Fenster ein. Genießen. Vergessen Sie auch nicht, mput * hinzuzufügen, um alle Dateien aus dem Basisverzeichnis zu übertragen.


6
Seit wann läuft PowerShell auf einem Unix-System?
Michael Hampton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.