传输完成后如何处理一系列文件

传输完成后如何处理一系列文件

我拥有的

我有 2 台服务器。让我们称呼他们为sen.derrecei.ver

发送者生成文件;这些文件的大小范围从 20Kb 到 30Gb。

我编写了一个脚本,用于在生成文件后检查文件有多大,如果小于 10Mb,则recei.ver通过 SFTP 发送文件。否则,如果它大于 10Mb,则将其拆分为 10Mb 块,然后recei.ver通过 SFTP 将其发送到。

发送时间显然是由文件大小和线速度决定的。该线速可能低至 100Kbps,这意味着理论上传输最大文件可能需要长达 11 个小时。

我需要的

我想做的就是recei.ver自动将文件重新整理成一个大文件(并运行一些额外的任务,例如解压、发送通知电子邮件等)。

我什么可以

我可以尝试使用inotifywait-m选项,然后检查正在写入的文件的文件大小,然后在创建的最后一个文件小于 10,485,760 字节时进行分类。

然后我可以捕捉这些块,并用一个测试焦油tar tf <filename>; echo $?

有没有更好的办法?

它可能会起作用......但看起来并不优雅。有一个更好的方法吗?

答案1

使用部分文件的大小作为隐式结束标记可能很脆弱。更好的办法是先发送各个部分,然后发送一个列出各个部分的控制文件(可能使用 sha256 校验和来检测传输问题),以便接收程序可以检查是否所有部分都已传输,然后才开始重新组装。

相关内容