我用来scp
将一些大文件(> 1 GB)从我的笔记本电脑(Ubuntu 12.04)传输到我的桌面(Ubuntu 14.04)。笔记本电脑通过无线连接到我的路由器,台式机通过电缆连接。
出于好奇,我决定使用 md5 摘要验证传输的文件:我在源计算机上创建摘要,将其传输到目标计算机,并将其与-c
验证传输的文件的选项一起使用。令我惊讶的是,超过 50% 的时间我都会遇到错误:
md5sum: WARNING: 1 computed checksum did NOT match
我的问题:数据损坏是否经常发生scp
?我希望(1)数据传输错误相当罕见,并且(2)scp
检查其数据并可能在出现错误时重新发送它。这些错误的原因可能是什么?我的假设:
- WLAN 连接不良,经常会在传输过程中损坏数据。
- 内存故障:
md5sum -c
即使数据正确,也会出现故障,因为 RAM 无法正常工作。 - 硬盘损坏:
md5sum -c
由于磁盘包含错误而发生故障。 - 综合以上原因。
请注意,我的硬盘和 RAM 都很新:我 5 个月前买的。
答案1
scp 通过 SSH 传输文件,SSH 进行加密真实性和完整性检查。这基本上排除了 WLAN 不良的可能性。
记性不好是有可能的。注意记性常常不好开始不好,这通常不是因为变老。安装并运行 memtest86/metest86+ 将确认这一点或基本上排除它。 (为了排除这种可能性,您需要让测试运行一段时间,至少过夜)。如果发现错误,您无需继续运行,可以立即停止并继续更换 DIMM。
磁盘也有可能损坏它。同样,磁盘布线也可能有问题,或者控制器有缺陷等。
其他可能性是文件系统错误(如果您使用的是 ext4 等常见的东西,则不太可能)、恶意软件(谢天谢地,在 Linux 上相当罕见),但这很可能是硬件问题。