Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用自动化工具检查通过网络复制的文件的完整性?_Java_Apache Commons Vfs - Fatal编程技术网

Java 如何使用自动化工具检查通过网络复制的文件的完整性?

Java 如何使用自动化工具检查通过网络复制的文件的完整性?,java,apache-commons-vfs,Java,Apache Commons Vfs,我想以编程方式检查复制到共享文件夹的文件的完整性,这是由自动化工具执行的一组步骤的一部分,因此我正在寻找最好(最优雅)的方法,使其更可靠,而不涉及手动操作 关于共享文件夹:它是一个存储服务器,我不能在那里部署任何东西。考虑与拥有服务器的人联系,这样他们能提供我需要的信息(即,SAH256哈希)是否有趣?有其他选择吗?如果允许下载上载的文件,请通过计算和检查哈希来检查机器的完整性。还是下载需要很长时间 更新: 我认为我们需要一些先决条件或假设来讨论一个适当的解决方案。我们可以相信这一点吗 上传很

我想以编程方式检查复制到共享文件夹的文件的完整性,这是由自动化工具执行的一组步骤的一部分,因此我正在寻找最好(最优雅)的方法,使其更可靠,而不涉及手动操作


关于共享文件夹:它是一个存储服务器,我不能在那里部署任何东西。考虑与拥有服务器的人联系,这样他们能提供我需要的信息(即,SAH256哈希)是否有趣?有其他选择吗?

如果允许下载上载的文件,请通过计算和检查哈希来检查机器的完整性。还是下载需要很长时间

更新:

我认为我们需要一些先决条件或假设来讨论一个适当的解决方案。我们可以相信这一点吗

  • 上传很可能没有错误(成功的概率为p)
  • 下载很可能没有错误(成功的概率为q)

因此,上传一个文件并再次下载它应该成功,概率为p*q。如果p*q非常高,下载上传文件的成本很低,那么在本地计算机上检查哈希值是合适的,对吗?

除了在sftp或https协议中执行的检查之外,Apache Commons VFS不支持这一点。如果您的服务器不配合,通常会上载额外的文件,如.sha1或.md5(或PGP.asc签名)。对于VFS,这只是第二个要上传/下载的文件。

检查完整性最可靠的方法是比较文件哈希。你能以某种方式得到远程文件的sha xxx散列来进行比较吗?没错,这是我的问题!我想收集一些切实可行的想法/最佳实践。那么,你对远程机器有什么样的访问权限?基本上,你需要获取上传文件的哈希值,以便在本地计算机上进行比较。如果在上传过程中出现异常,但在下载阶段没有出现异常,那么我如何保证上传的文件有效?这是你无法做到的。考虑文件的上传是可以的,但是哈希的上传是错误的。或者文件的上传和散列的上传已损坏,但现在匹配(这不太可能,但可能),或者上传文件的下载已损坏,但上传正常,等等。但是,如果上传很可能没有损坏,而下载也没有损坏,那么在大多数情况下,您应该不会有问题。如果验证失败,只要再做一次,如果不太昂贵的话。对于大多数操作,它涉及一组小文件:html、css、js、JSP等。;但是很少需要移动.ear包,因为它是一个非常沉重的文件(即,我们不想在网络上移动两次)。但我明白你的意思,你的方法会给我一些关于网络稳定性的参考。。