需要找到一种通过 FTP 将文件上传到我的服务器的方法。但只有那些已经修改过的。有没有一种简单的方法可以做到这一点?命令行 ftp 客户端或脚本是首选。谢谢,乔纳斯。
7 回答
最可靠的方法是对您关心的所有本地文件进行 md5 哈希并将其存储在一个文件中。因此该文件将包含文件名列表及其 md5 哈希值。将该文件存储在您的 ftp 服务器上。当您想更新 ftp 服务器上的文件时,请下载包含该列表的文件,将其与您的所有本地文件进行比较,然后上传已更改(或新的)的文件。这样,您就不必担心存档位、修改日期或查看文件大小,这些文件的使用永远不会 100% 可靠。
由于显而易见的原因,使用文件大小不可靠 - 文件可能会更改但大小相同。我不喜欢使用存档位或修改日期,因为如果您使用另一个备份程序备份或恢复本地目录,这两者都可能会混淆。
(等待主要问题的评论得到回答再展开)
该策略将是:
- 使用日期、时间、存档位或哈希查找更改的文件(取决于操作系统)
- 使用此列表,生成一个 FTP 脚本 PUTing 这些文件
- 运行 FTP 脚本。
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
乔纳斯,
文件可能多久更改一次?
如果它们在可预测的时间范围内发生变化,您可以考虑在文件中使用修改后的日期属性和其他日期属性。
通过使用git-ftp相对容易。但只有当您的计算机是唯一修改 ftp 服务器上文件夹的计算机时,它才有效...
我听说 rsync 也可以工作,但我不确定,我从未使用过 rsync ......而且它不是 ftp ......
Netbeans 有一个不错的 ftp。支持选择性上传、下载