单个unix命令正确传输大文件?

use*_*798 3 unix checksum

我正在尝试在两台 unix 机器之间传输一个大(~3GB)文件。

我可以使用 scp 或 rsync,但有时传输已损坏。(我必须手动检查。)我可以将文件分成几部分并传输它们,然后校验和然后重新组合,但这很乏味。

是否有一个命令可以在两台 Unix 机器之间正确传输大文件?我希望它自动对两个副本进行校验和,并继续重做传输(或其部分),直到它正确地通过线路获取所有字节。

Ran*_*son 7

Rsync 的工作原理是将文件分成多个块,并且仅在它们不同时才传输这些块。就其本质而言,它应该能够检测和修复损坏。您是否尝试过使用 --partial 选项,如果它被中断,它将让它继续,并重复重新运行该命令直到它不再传输任何数据?

您是否在连接的远程端使用 rsync 服务器?如果没有,那么您实际上并没有使用 rsync 来传输文件,它只是使用了您正在使用的任何底层传输方法,因此您不会进行错误检测。

  • 如果您正在使用 rsync,那么您正在使用 rsync - 如果没有服务器守护进程监听,那么它将尝试通过 SSH 登录,启动一个 rsync 进程临时充当“服务器”端,并将 rsync 协议隧道传输到 SSH 流。请记住:当使用 rsync 针对(可能)已知良好的主副本重新检查可能损坏的文件时,请使用 `--checksum` 选项强制它检查每个文件的内容,而不是采用假设文件大小相同的快捷方式+时间戳没问题。 (2认同)

小智 6

在 rsync 中使用 -c 选项(校验和)。

rsync -azcvPh file1 user@remotehost:/tmp/
Run Code Online (Sandbox Code Playgroud)

-P 选项显示进度统计信息,将帮助您了解文件传输中断的位置/时间。-h 使其“人类可读”,而 -z 压缩。