6

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

4

7 回答 7

5

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

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

于 2009-01-08T16:10:25.050 回答
4

你是真的坚持ftp,还是可以rsync改用?


如果需要,mhenry1384 的想法大致是什么ftp(无论如何,它的一半,还查看不同文件的修改时间......)。 rsyncrsync

于 2009-01-08T16:37:35.683 回答
2

(等待主要问题的评论得到回答再展开)

该策略将是:

  1. 使用日期、时间、存档位或哈希查找更改的文件(取决于操作系统)
  2. 使用此列表,生成一个 FTP 脚本 PUTing 这些文件
  3. 运行 FTP 脚本。
于 2009-01-08T15:43:41.250 回答
2

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

你可以看到发生了什么:

git ftp show --scope xxxx
git ftp log --scope xxxx
于 2015-04-07T14:40:36.023 回答
0

乔纳斯,

文件可能多久更改一次?

如果它们在可预测的时间范围内发生变化,您可以考虑在文件中使用修改后的日期属性和其他日期属性。

于 2009-01-08T15:41:58.307 回答
0

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

我听说 rsync 也可以工作,但我不确定,我从未使用过 rsync ......而且它不是 ftp ......

于 2014-02-03T04:18:32.383 回答
0

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

于 2015-07-05T16:25:56.917 回答