Shell 是否自动将FTP文件夹的内容复制到本地Windows文件夹而不覆盖?

Shell 是否自动将FTP文件夹的内容复制到本地Windows文件夹而不覆盖?,shell,unix,ftp,Shell,Unix,Ftp,我需要将FTP文件夹中的所有文件复制到本地Windows文件夹,但不替换已存在的文件。这需要是一个每小时无人值守运行的作业/任务 这就是工作需要做的: 1.连接到FTP服务器。 2.在ftp中,移动到文件夹/var/MyFolder。 3.在本地PC中,移动到c:\MyDestination。 4.复制/var/MyFolder中c:\MyDestination中不存在的所有文件。 5.断开 我以前曾使用MGET*(从.bat运行)尝试过以下脚本,但它复制并覆盖了所有内容。这意味着,即使以前复制

我需要将FTP文件夹中的所有文件复制到本地Windows文件夹,但不替换已存在的文件。这需要是一个每小时无人值守运行的作业/任务

这就是工作需要做的: 1.连接到FTP服务器。 2.在ftp中,移动到文件夹/var/MyFolder。 3.在本地PC中,移动到c:\MyDestination。 4.复制/var/MyFolder中c:\MyDestination中不存在的所有文件。 5.断开

我以前曾使用MGET*(从.bat运行)尝试过以下脚本,但它复制并覆盖了所有内容。这意味着,即使以前复制了1000个文件,它也会再次复制它们

open MyFtpServer.com
UserName
Password
lcd c:\MyDestination
cd /var/MyFolder
binary
mget *
感谢您的帮助

谢谢。

请使用

如果要包括子目录(根据实际远程路径的深度调整
cut dirs
编号):

如果不需要子目录:

cd /d C:\MyDestination
wget.exe -nc ftp://UserName:Password@MyFtpServer.com/var/MyFolder/*
“魔术”位(对于第二种形式)是
-nc
选项,它告诉
wget
不要覆盖本地已经存在的文件。请记住,旧文件也会被单独保留,因此,如果FTP服务器上的文件被编辑或更新,它将不会被重新下载。如果还想更新文件,请使用
-N
而不是
-nc


(请注意,您也可以键入
wget
而不是
wget.exe
,我只是添加了扩展名以指出这些是Windows批处理文件命令)

谢谢您的评论。它在某种程度上起作用,但我发现了一些问题:1)我登录时的默认文件夹是/home/jdoe;我将从中复制的文件夹不在此文件夹中。如何移动到/var/MyFolder?2) 为什么要在cd中添加“-d”开关?我得到“文件名、目录名或卷标语法不正确”。我询问的原因是,我不会将文件复制到当前文件夹,我必须将它们复制到特定文件夹。您可以使用
wget
-P
标志指定目标目录。假设我正在从Windows PC上的E:\MyDestination运行wget。是否可以使用-P标志将内容复制到E:\MyOtherFolder\MyCustomFolder?我假设它只是使用HTTP或FTP.Edited复制到目标。Linux命令行习惯;正确的参数是
/d
,而不是
-d
,它使
cd
生效,即使您当前使用的是不同的字母。是的,wget仅用于从远程服务器复制,如果需要复制本地文件,请使用
copy
xcopy
cd /d C:\MyDestination
wget.exe -nc ftp://UserName:Password@MyFtpServer.com/var/MyFolder/*