GNU/Linux >> Linux の 問題 >  >> Linux

Rsyncを使用してSSH経由で部分的に転送されたファイルを再開する

このシナリオを想像してください。 scpを使用して、SSH経由で1つのシステムから別のシステムにいくつかの大きなファイルをコピーしています 指図。突然電源が切れたため、ネットワーク接続が切断され、コピープロセスが途中で終了します。あなたならどうしますか?電源がオンラインに戻ったら、コピープロセスを再開するだけですか?はい、動作します。ただし、scp コマンドには再開オプションがないため、最初からファイルのコピーを開始し、既存のファイルを上書きします。これは少し面倒で時間のかかる作業です。ここでRsync ユーティリティが役に立ちます! Rsyncを使用して、SSH経由で部分的に転送されたファイルを簡単に再開できます。中断したコピーまたはダウンロードプロセスを中断したところから再開するのに役立ちます。

Rsyncとは何ですか?

不思議に思う人のために、Rsyncは、リモートおよびローカルシステムとの間でファイルまたはフォルダをコピーおよび転送するために使用できる、高速で用途の広いファイルコピーユーティリティです。動作のあらゆる側面を制御し、コピーするファイルのセットを非常に柔軟に指定できるようにする多数のオプションを提供します。 デルタ転送アルゴリズムで有名です 、ソースファイルと宛先の既存のファイルの違いのみを送信することで、ネットワーク経由で送信されるデータの量を削減します。 Rsyncは、バックアップとミラーリング、および日常的に使用するための改善されたコピーコマンドとして広く使用されています。

scpと同じように 、rsyncはSSH経由でファイルをコピーすることもできます。 SSH経由で大きなサイズのファイルやフォルダをダウンロードまたは転送する場合は、以下に説明するようにrsyncユーティリティを使用することをお勧めします。

LinuxにRsyncをインストールする

rsyncユーティリティを両側にインストールする必要があることに注意してください (つまり、リモートシステムとローカルシステム)部分的に転送されたファイルを再開するため。 Rsyncは、ほとんどのLinuxディストリビューションの公式リポジトリで利用できるため、ディストリビューションのデフォルトのパッケージマネージャーを使用してインストールできます。

Alpine Linuxの場合 、以下のようにRsyncをインストールできます:

$ sudo apk add rsync

Arch Linux およびそのバリアント、コマンドを使用してRsyncをインストールします:

$ sudo pacman -S rsync

Debian Ubuntu Linux Mint

$ sudo apt-get install rsync

Fedora RHEL CentOS AlmaLinux およびRockyLinux

$ sudo dnf install rsync

SUSE / openSUSE

$ sudo zypper install rsync

Rsyncを使用して部分的に転送されたファイルを再開します

例を見てみましょう。次のコマンドを使用して、UbuntuISOファイルをローカルシステムからリモートシステムにコピーします。

$ 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

上記の出力でわかるように、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)

見る?これで、コピープロセスが以前に中断したところから再開されます。

--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

上記の出力にあるように、Ubuntu.isoファイルがリモートシステムにコピーされ、そのサイズは835MBです。

または、次のコマンドを使用して、SSH経由で部分的に転送されたファイルを再開することもできます。

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

または、

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

それでおしまい。これで、rsyncコマンドを使用して、キャンセル、中断、および部分的にダウンロードされたファイルを再開する方法がわかりました。ご覧のとおり、それほど難しくはありません。 rsyncが両方のシステムにインストールされている場合、上記のようにSSH経由でファイルコピープロセスを簡単に再開できます。

推奨される読み物:

  • 初心者向けのLinuxRsyncコマンドの例
  • Wgetを使用して部分的にダウンロードされたファイルを再開する方法
  • SSH経由でリモートLinuxシステムでコマンドを実行

Linux
  1. 特定のファイルを除外しながらrsyncを使用してディレクトリを再帰的にコピーする方法

  2. include オプションを使用して特定のタイプのファイルのみを rsync コピーする

  3. scp を使用して複数のファイルを同時にコピーする方法

  1. rsyncを使用してファイルを同期する

  2. 一部のファイルのみを含めるために正規表現を使用して rsync

  3. SSH 経由の Rsync で tty が存在しない

  1. Ansibleガイド:Ansibleを使用してファイルを管理する

  2. LinuxでWgetを使用して部分的にダウンロードされたファイルを再開する

  3. SCPとRsyncでファイルをコピーする