试图找到一种简单的方法来通过FTP上传仅修改过的文件

时间:2009-01-08 15:34:51

标签: command-line ftp

需要找到一种通过FTP将文件上传到我的服务器的方法。但只有经过修改的那些。 有一个简单的方法吗? 命令行ftp客户端或脚本是首选。 谢谢,乔纳斯。

9 个答案:

答案 0 :(得分:5)

最可靠的方法是对你关心的所有本地文件进行md5哈希并将其存储在文件中。因此该文件将包含文件名列表及其md5哈希值。将该文件存储在ftp服务器上。如果要更新ftp服务器上的文件,请下载包含列表的文件,将其与所有本地文件进行比较,然后上载已更改(或新增)的文件。这样您就不必担心存档位,修改日期或查看文件大小,使用它们永远不会100%可靠。

由于显而易见的原因,使用文件大小并不可靠 - 文件可能会更改但具有相同的大小。我不喜欢使用存档位或修改日期,因为如果使用其他备份程序备份或恢复本地目录,其中任何一个都可能会混淆。

答案 1 :(得分:3)

您真的坚持ftp,还是可以使用rsync


如果ftp 需要 mhenry1384's idea大致是rsync所做的(无论如何,rsync也会查看修改时间不同的文件......)。

答案 2 :(得分:2)

(等待扩大前要回答的主要问题的评论)

策略是:

  1. 使用日期,时间,存档位或哈希值(取决于操作系统)查找更改的文件
  2. 使用此列表,生成一个FTP脚本PUTting这些文件
  3. 运行FTP脚本。

答案 3 :(得分:1)

git-ftp非常好用:

apt-get install git-ftp

在应用程序文件夹中:

git config git.ftp.xxxx.url ftpservice.server.com/root/dir/for/ftp
git config git.ftp.xxxx.user myUsername
git config git.ftp.xxxx.password myPassword

仅当目标是其他ftp客户端的最新版本时(它将ftpservice.server.com/root/dir/for/ftp/git-ftp.log更改为当前提交)

git ftp catchup --scope xxxx

//编辑来源//

git commit -m "new version"
git ftp push --scope xxxx

你可以看到hapens:

git ftp show --scope xxxx
git ftp log --scope xxxx

答案 4 :(得分:0)

您是否考虑过使用文件中的存档位?

答案 5 :(得分:0)

的Jonas,

文件可能多久更改一次?

如果他们在可预测的时间范围内更改,您可以考虑在文件上使用修改日期和其他日期属性。

答案 6 :(得分:0)

我知道这是一个老线程,但在我寻找相同的解决方案时,我遇到了这个可能相当有用的链接:Script FTP

答案 7 :(得分:0)

使用git-ftp相对容易。但它只有在您的计算机是唯一一个修改ftp服务器上的文件夹的时候才有效...

我听说rsync也在运行,但我不确定,我从未使用rsync ......而且它不是ftp ......

答案 8 :(得分:0)

Netbeans有一个不错的ftp。它支持选择性上传,下载