ncftpputを使用することができます。以下のようにしてください。
yum は小文字です。
代わりに
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
標準のコマンドライン ftp クライアントを使用している場合、MPUT
コマンドを使用すると、(シェル・グロブ形式の) パターンに一致するすべてのファイルを転送できるようになりますので、MPUT *
はカレントディレクトリ内のすべてのファイルを転送します。また、パターンにマッチしたファイルを取得するMGET
もあります。
デフォルトでは、MPUT
と MGET
の両方とも、転送する前に各ファイルを転送するかどうかを確認します。プロンプトをオフにするには、"PROMPT “コマンド(引数なし。トグル)を使用するとよいだろう。
LeechFTPやFileZillaなどのFTPクライアントを使用します。多くの人がCuteFTPを愛用していますが、最後にチェックしたのはシェアウェアです。ディレクトリ構造を含めたフォルダ全体の転送に対応しています。
純粋にブルートフォースであり、エレガントなものではありませんが、コマンドライン上で唯一機能した答えを提供します。私はファイルのリストを作成し、スクリプトに入れました。
generate your list of files.
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
``` 0x1&
私のような他のWindows初心者のための簡単なチュートリアルです。
フォルダ全体(サブフォルダとファイルを全て含む)をアップロードする最も簡単な方法は次の通りです:
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(1 行で)。0x1& と入力してください。
-R
は「再帰的」のフラグで、コマンドはすべてのサブフォルダを再帰的にコピーします。
(https://stackoverflow.com/questions/2252000/upload-a-folder-by-ftp)をチェックアウトしてみてください。
また、 プログラムでサーバー上にフォルダを作成して、その新しいフォルダにすべてのファイルをアップロードすることもできます。
対象のディレクトリは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);
}
}
私の答えは @dgig さんの答えのバリエーションです。
全てのファイルをリストアップして(putコマンドを含めて)ファイルに保存することができます。
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
に保存して、sftp でファイルを処理することができます。
sftp -C -b sftpbatchfile.txt name@server
-C
は圧縮用、-b
はバッチファイル用です。