FTPを使用してフォルダー全体をアップロードできますか?


29

FTPを使用してフルフォルダーをアップロードする必要があります。フォルダーとそのすべてのコンテンツを一度に転送するオプションはありますか?

回答:


24

標準のコマンドラインftpクライアントを使用している場合、このMPUTコマンドを使用すると、(シェルグロブスタイル)パターンに一致するすべてのファイルを転送できるためMPUT *、現在のディレクトリにあるすべてのファイルが送信されます。MGETパターンに一致するファイルを取得することもできます。

デフォルトでは、両方MPUTMGET実行する前に、各ファイルを転送するかどうかを尋ねられます。「PROMPT」コマンドを使用してプロンプトをオフにすることをお勧めします(引数なし。トグルです)。


この質問はもともとstackoverflowから来たので、私はそれが受け入れられた答えであると思う。元アスカーは.... 1を受け入れるするつもりはないので、消えているようだけど
codetaku

警告:Windowsに付属のFTPコマンドラインクライアントはパッシブモードをサポートしていないため、この手法を使用すると時間を浪費する可能性があります。ファイルをアップロードする必要があり、ネイティブにインストールされたツールを備えたWindowsコマンドラインを使用していたため、私の場合はそうでした。
sean2078

1
現在のディレクトリ内のすべてのプレーンファイルを転送しますが、存在するディレクトリを再帰的に転送することはありません。黙って無視します
bergercookie

22

ncftpputを使用できます。以下をせよ:

  1. ncftpをインストールします。

    yum install ncftp
    

yumは小文字です。

代わりに:

    apt-get install ncftp

2.次のコマンドを実行します。

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*

Yumは、大文字と小文字が区別されるため、yumに変更する必要があります。
-olekeh

1
ncftpputのすべてのCLIオプションは次のとおりです。ncftp.com/ ncftp
Pepijn Olivier



2

ここにたどり着く私のような他のWindows初心者向けの簡単なチュートリアル:

フォルダー全体(すべてのサブフォルダーとファイルを含む)をアップロードする最も簡単な方法は次のとおりです。

  1. このリンクからNcFTPクライアントをダウンロードします(無料ですが、寄付できます)。
  2. リストからMicrosoft Windows用のNcFTPクライアント3.2.5を選択します。
  3. それをインストールします。
  4. 完了すると、チェリーアイコンのある小さなCMDウィンドウがポップアップします。必要ありません。
  5. 標準のCMDウィンドウを開いて、次のように入力します。
    ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * /
                     _C:\ yourFolderDirectoryHere \\ * _
    (1行として)。

ご了承ください:

  • -R 「再帰的」のフラグです。コマンドにすべてのサブフォルダーを再帰的にコピーさせます
  • / (スラッシュ)はWebサイトのルートディレクトリです
  • C:\yourFolderDirectoryHere\* 内部のすべてを選択します C:\yourFolderDirectoryHere

良さそうに見えますが、サーバーはIPを禁止し、短い間隔で800の接続を確立しました。接続数を減らす方法はありません。別の問題は、宛先ファイルが既に存在する場合、アップロードをスキップする方法がわからないことです。
16851556

2

私は答えを提供します-それは純粋な総当たりであり、ほんの少しエレガントではありませんが-コマンドラインで私のために働いた唯一のものでした。ファイルのリストを作成し、スクリプトに入れました。

ファイルのリストを生成します。

find my-dir -exec echo "put /Users/username/"{} {}  \;

それらをコピーしてスクリプトに貼り付けます。

#!/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


0

FileZillaはこれに最適です。何もダウンロード/インストールしたくない場合は、Internet Explorerで実行できます。詳細オプションに移動して、を選択しますEnable FTP folder view (outside of Internet Explorer)。次に、エクスプローラーウィンドウをFTPサーバーに向け、エクスプローラーウィンドウ間でファイルとフォルダーをドラッグアンドドロップします。



0

ターゲットディレクトリはzipファイルです。以下のコードを使用して、完全なzipファイルをFTPサーバーにコピーできます。

//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);
    }
}         

それは素晴らしいことですが、プログラムはコンパイルされません。
DavidPostill

0

私の答えは@dgigの答えのバリエーションです。

すべてのファイルをリストし、それらを(putコマンドを含めて)ファイルに保存できます。

find my-dir -exec echo "put /Users/username/"{} {} > list.txt \; 

次に、sftpを使用してファイルを処理します。

sftp -C -b sftpbatchfile.txt name@server

-C圧縮-b用、バッチファイル用


これは尋ねられたようにFTPを使用しません。このsftpプログラムはSFTPプロトコルを使用しますが、これはいくつかの共通の文字がありますが、異なるプロトコルです。そして、あなたはenter code here残り物を編集しませんでした。
dave_thompson_085
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.