我正在使用 GitBash,正在下载一个大于 10GB 的文件,但中途停止了。我不想从头开始再次下载整个文件。如何从 SFTP 停止的地方开始下载? 我尝试过 reget 命令,它显示无法下载非常规文件。
(假设您正在使用OpenSSH
sftp
),使用其reget
命令。它与 get
具有相同的语法,只是它从现有本地文件的末尾开始传输。
同样的效果有
-a
切换到get
命令或-a
全局命令行sftp
开关。
reput
命令。
您需要 OpenSSH 6.3 及更高版本[在客户端]才能使用这些功能。
您需要确保您发出的本地路径参数是您尝试恢复的文件的路径。事实上,为了消除猜测工作,如果从要恢复的文件所在的目录启动 sftp 程序,会更容易。 (不过有一点警告,如果文件不相同并且只有相同的名称,它无论如何都会尝试恢复,而您最终会遇到无法使用的混乱)。
Example:
myname@localhost:$> cd /home/myname/downloads
myname@localhost:$> sftp -P 2207 -i ~/.ssh/id_ed25519 [email protected]
connected to 1.2.3.4
sftp> cd /home/username/stuff_and_things
sftp> reget my_really_big_file_of_temporary_concern.tar.xz
Resuming /home/username/stuff_and_things/my_really_big_file_of_temporary_concern.tar.xz to
my_really_big_file_of_temporary_concern.txz
my_really_big_file_of_temporary_concern.tar.xz 51% 5099MB 1.2KB/s 334:23:04
sftp>
(注意:上面的示例输出完全是捏造的,包括速度、完成百分比和剩余时间)
我只需要这样做,它就起作用了。但我的文件只有 4GB。我的 VPN 连接非常不稳定,因此使用 sftp(除非您强制使用实际的 scp 协议,否则默认情况下都会使用它)可以真正节省时间。 只需确保在两端生成校验和以验证恢复的下载。
最后,旁注:使用 XZ 压缩时,在 2 个不同主机上打包的相同内容的最终文件大小会有很大差异,具体取决于主机硬件和当天衬衫的颜色。示例:如果您要下载 .tar.xz 文件,请运行“unxz”或“xz -d”,然后立即再次使用“xz”重新压缩它,生成的 tar.xz 的大小将不同,并且也会也使之前针对该文件所做的任何校验和无效。只是一个需要注意的小知识,因为我遇到过几次并且最初认为存在一些腐败。 使用 gzip 执行相同的任务将在您使用它的任何主机上产生相同的文件大小和相同的校验和。
希望有帮助!