你可以使用ncftpput。进行以下操作。
1.安装 ncftp:
yum 是小写的.
或者。
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
如果你使用的是标准的命令行ftp客户端,MPUT
命令将允许你传输所有匹配(shell glob-style)模式的文件,所以MPUT *
将发送当前目录下的所有文件。还有MGET
可以检索匹配模式的文件。
默认情况下,MPUT
和MGET
都会在传输每个文件之前提示是否传输。你可能想用 “PROMPT "命令关闭提示(没有参数,这是一个切换)。
使用一个FTP客户端,如LeechFTP或FileZilla或类似的东西。很多人发誓用CuteFTP,但我最后检查的是共享软件。都支持传输整个文件夹,包括目录结构。
1.让用户/客户端压缩文件夹 2.上传压缩文件 3. 解压文件夹服务器端。
我将提供一个答案–虽然它是纯粹的蛮力,一点也不优雅–是唯一在命令行上对我有效的方法。我创建了一个文件列表,并将它们放入一个脚本中。
生成你的文件列表。
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新手提供一个简单的教程。
上传整个文件夹(包括所有子文件夹和文件)的最简单方法是:
1.下载 NcFTP客户端(免费的,但你可以捐赠) 从这个链接。
2. 从列表中选择NcFTP Client 3.2.5 for Microsoft Windows。
3. 安装它。
4. 安装完成后,会弹出一个带有樱桃图标的CMD小窗口。你不需要它。
5. 只要打开一个标准的CMD窗口,然后输入。
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(作为一行)。
请注意: -
-0x1& (作为一行)。
-R
是 “递归 "的标志;它使命令递归地复制所有子文件夹 /
(斜线)是你网站的根目录 C:\yourFolderDirectoryHere\*
选择C:\yourFolderDirectoryHere
内的所有内容。检查这个。
你也可以在服务器上编程创建一个文件夹,然后把所有文件上传到那个新的文件夹。
目标目录是一个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
是批处理文件。