使用 Rsync 通过 SSH 恢复部分传输的文件

想象一下这个场景。 您正在使用 SSH 通过 SSH 将一些大文件从一个系统复制到另一个系统 scp 命令。 突然断电,所以网络连接断开,复制过程中途终止。 你会怎么做? 电源恢复在线后重新启动复制过程? 是的,它确实有效。 但是,那 scp 命令没有恢复选项,因此它只会从头开始复制文件并覆盖现有文件。 这是一个有点烦人且耗时的任务。 这是哪里 同步 实用程序来帮助! 我们可以使用 Rsync 轻松地通过 SSH 恢复部分传输的文件。 它可以帮助您恢复中断的复制或下载过程。

什么是 Rsync?

对于那些想知道的人,Rsync 是一种快速、多功能的文件复制实用程序,可用于在远程和本地系统之间复制和传输文件或文件夹。 它提供了大量选项来控制其行为的各个方面,并允许非常灵活地指定要复制的文件集。 它以其 增量转移算法,通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。 Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。

就像 scp, rsync 也可以通过 SSH 复制文件。 如果您想通过 SSH 下载或传输大型文件和文件夹,我建议您使用 rsync 实用程序,如下所述。

在 Linux 中安装 Rsync

rsync 实用程序应安装在两侧 (即远程和本地系统)以恢复部分传输的文件。 Rsync 在大多数 Linux 发行版的官方存储库中都可用,因此您可以使用发行版的默认包管理器安装它。

高山 Linux,我们可以像下面这样安装Rsync:

$ sudo apk add rsync

Arch Linux 及其变体,使用命令安装 Rsync:

$ sudo pacman -S rsync

Debian, Ubuntu, Linux 薄荷糖

$ sudo apt-get install rsync

Fedora, RHEL, 中央操作系统, AlmaLinux洛基 Linux

$ sudo dnf install rsync

SUSE/openSUSE

$ sudo zypper install rsync

使用 Rsync 恢复部分传输的文件

现在让我们看一个例子。 我将使用以下命令将 Ubuntu ISO 文件从本地系统复制到远程系统:

$ scp ubuntu.iso [email protected]:/home/sk/

这里,

  • sk 是我的远程系统的用户名
  • 192.168.225.22 是远程机器的 IP 地址。
  • /home/sk/ 是远程目的地。

现在,我按强制终止了复制过程 CTRL+C.

样本输出:

[email protected]'s password:  ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c
在 Linux 上使用 scp 命令复制文件

正如您在上面的输出中看到的,当复制过程达到 33% 时,我终止了复制过程。

如果我重新运行上述命令,它只会覆盖现有文件。 换句话说,复制过程不会从我离开的地方继续。

为了恢复复制过程以复制部分传输的 ISO 文件,请使用 rsync 命令如下图。

$ rsync -P -rsh=ssh ubuntu.iso [email protected]:/home/sk/

样本输出:

[email protected]'s password:  sending incremental file list ubuntu.iso 834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)
在 Linux 上通过 SSH 使用 Rsync 恢复部分传输的文件

看? 现在,复制过程从我们之前停止的地方恢复。

您也可以使用“--partial“而不是参数”-P“如下所示。

$ rsync --partial -rsh=ssh ubuntu.iso [email protected]:/home/sk/

这里,参数“--partial“ 或者 ”-P” 告诉 rsync 命令保留部分下载的文件并恢复进程。

使用命令检查文件是否真的被复制到远程系统:

$ ssh [email protected] ls -lh [email protected]'s password:  total 835M -rw-rw-r-- 1 sk sk 834M Jul 26 2019 ubuntu.iso
通过 SSH 在远程系统上运行命令通过 SSH 在远程系统上运行命令

正如您在上面的输出中看到的,文件 Ubuntu.iso 被复制到远程系统,其大小为 835MB。

或者,我们也可以使用以下命令通过 SSH 恢复部分传输的文件。

$ rsync -avP ubuntu.iso [email protected]:/home/sk/

或者,

$ rsync -av --partial ubuntu.iso [email protected]:/home/sk/

而已。 您现在知道如何使用 rsync 命令恢复已取消、中断和部分下载的文件。 如您所见,这并不难。 如果在两个系统上都安装了 rsync,我们可以轻松地通过 SSH 恢复文件复制过程,如上所述。

建议阅读:

  • 适合初学者的 Linux Rsync 命令示例
  • 如何使用 Wget 恢复部分下载的文件
  • 通过 SSH 在远程 Linux 系统上执行命令

文件传输LinuxLinux 命令Linux 方法Linux 提示恢复部分下载或传输的文件RsyncscpSSH