SFTP 上传破坏文件

SFTP 上传破坏文件

将 .mov 视频文件上传到远程 sftp 位置时遇到一个奇怪的问题:

问题是,虽然本地 video1.mov 可播放,但远程 video1.mov 在尝试播放时会抛出 -2048 错误(以及“未找到 moov atom”之类的日志)。

前提:本地文件和远程文件的大小完全相同。那么会有什么问题呢?

答案1

某些视频格式不能像这样从头到尾进行编码;编码器返回到开头修改一些数据字段(大小、长度等)。分段复制无法处理这种情况,因此您现在得到的是损坏的视频文件。

答案2

据我所知(我找不到任何描述甚至承认其存在的文档),SFTP 恢复假定目标文件已存在的部分与源文件的第一部分相同,直到远程文件的大小为止。然后它将源文件的其余部分附加到现有目标文件后面,并假定这两个文件现在相同。

如果在恢复传输之前,任一文件中最初传输的部分发生变化,则此方法会失败。我猜想您的.mov文件在文件的最开始部分有一些播放所需的标头,并且直到编码完成才会将其写入文件。那么您复制的远程文件将错过此标头,因为在传输时尚未写入此标头。

其他工具也rsync有能力检测这些事情,并且在某些情况下避免重新传输整个文件,至少如果后期改变只是覆盖而不是插入。

相关内容