1

最近我将一组数据从一台服务器传输到 hpcc(高性能计算)命令是这样的:

scp /folder1/*.fastq.gz xxx@hpcc:/home/
scp /folder2/*.fastq.gz xxx@hpcc:/home/
scp /folder3/*.fastq.gz xxx@hpcc:/home/

我打开几个终端同时传输数据。我总共有大约 50 个这样的 fastq.gz 文件,每个文件大约 10GB。我只是想知道数据(尤其是如此大的数据)在以上述方式传输时是否有可能被扭曲?

因为服务器上的数据完好;而复制到 hpcc 后的一些数据被扭曲了。

谢谢你

4

2 回答 2

5

我强烈怀疑您的数据在传输过程中被scp(1).

TCP 提供流量流的(弱)16 位 CRC 校验和。因为它只有 16 位长,依赖 TCP 来确保数据完整性意味着损坏的数据包仍将大约每 (2^16) 个损坏的数据包验证一个。我早就失去了链接(和数学),但模糊地记得这意味着损坏的数据将在公共互联网上每两到 4 GB 被验证一次是正确的——尽管这些数字依赖于特定的错误引入率当我阅读该统计数据时。

SSH 版本 2在协议中引入了消息身份验证检查。这些是在对等点之间协商的,但我希望允许的最弱的是MD5,它提供了数据的 128 位加密哈希。加密哈希比二十年前更常见的用于检测数据传输错误的循环冗余校验先进得多,128 位是校验和大小的显着扩展。如今,我们可能对 MD5 的信任不足以完全依赖它来抵抗专门的攻击者,但它应该足以发现除了最不可思议的情况之外的所有情况下错误发生的错误。

我会在别处寻找您的腐败 - 首先是您存储数据的目标驱动器。

于 2011-12-09T00:44:19.993 回答
1

我知道这是一个古老的问题,但我认为 scp 也不应该负责;我的猜测是文件名冲突。

你说你有几个 scp 副本同时运行。/folder1上面粘贴的命令会将,/folder2和的内容复制/folder3/home. 如果您有两个文件名相同的文件,例如

/folder1/argle.fastq.gz
/folder1/bargle.fastq.gz    
/folder2/argle.fastq.gz

那么你会有一个文件名冲突/home。由于 scp 会很高兴地覆盖文件,dest而且我认为它在工作时不会锁定文件,因此将两个具有相同名称的不同文件复制到同一个地方很容易导致文件损坏。

于 2013-03-05T17:30:07.310 回答