使用rsync恢复部分转移的文件

时间:2020-03-21 11:44:54  来源:igfitidea点击:

什么是rsync?

对于那些想知道的人来说,rsync是一个快速的多功能文件复制实用程序,可用于复制和传输到远程和本地系统的文件或者文件夹。
它提供了大量选项,可控制其行为的每个方面,并允许复制一组文件的非常灵活的规范。
它以其三角洲传输算法而闻名,它通过仅在源文件和目的地的现有文件之间发送差异来减少通过网络发送的数据量。
rsync广泛用于备份和镜像,并作为日常使用的改进副本命令。

就像SCP一样,rsync也将复制文件过来。
如果我们想要通过SSH下载或者传输大尺寸文件和文件夹,我建议我们使用如下所述的rsync实用程序。

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

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

在Arch Linux及其变体上,使用命令安装rsync:

$sudo pacman -S rsync

在Debian,Ubuntu,Linux Mint:

$sudo apt-get install rsync

关于Fedora:

$sudo dnf install rsync

在Rhel,Centos:

$sudo yum install rsync

在SUSE/OpenSUSE上:

$sudo zypper install rsync

现在让我们看一个例子。
我将从我的本地系统复制Ubuntu 18.04 ISO到带有命令的远程系统:

$scp ubuntu.iso Hyman@theitroad:/home/sk/

其中

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

现在,我通过按Ctrl + C强制终止了复制过程。

示例输出:

Hyman@theitroad's password: 
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c

如上所述,当它达到33%时,我终止了复制过程。

如果我重新运行上面的命令,它将简单地覆盖现有文件。
换句话说,副本过程不会恢复我离开的地方。

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

$rsync -P -rsh=ssh ubuntu.iso Hyman@theitroad:/home/sk/

示例输出:

Hyman@theitroad's password: 
sending incremental file list
ubuntu.iso
834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)

看到了吗?
现在,恢复复制过程我们将在之前离开的地方。

我们还可以使用"--partial"而不是下面的参数"-p"。

$rsync --partial -rsh=ssh ubuntu.iso Hyman@theitroad:/home/sk/

其中参数"--partial"或者"-p"告诉rsync命令以保持部分下载的文件并恢复过程。

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

$ssh Hyman@theitroad ls -lh
Hyman@theitroad's password: 
total 835M
-rw-rw-r-- 1 sk sk 834M May 26 2019 ubuntu.iso

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

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

$rsync -avP ubuntu.iso Hyman@theitroad:/home/sk/

或者,

$rsync -av --partial ubuntu.iso Hyman@theitroad:/home/sk/

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