今日、私はさまざまなアプリケーションをテストするために頻繁に使用するUbuntuサーバーを再インストールする必要がありました。私のUbuntuサーバーには200GBを超えるデータがあり、それを失いたくありません。これらのデータをscp経由で転送したり、NFS、FTPをセットアップしてファイルをコピーしたりできますが、そのような大きなファイルを転送するには数時間かかると確信しています。別の方法を探していると、次の方法に出くわしました。 netcat を使用して、ネットワーク経由で2つのシステム間で大きなファイルをすばやく転送できます 、タール 、および pv GNU/LinuxおよびUnixライクなオペレーティングシステムのコマンド。他の方法とは異なり、私はそれが非常に速くて速いと思います。知らない人のために、 Netcat は、TCPまたはUDPプロトコルを使用してネットワーク接続間でデータを読み書きする単純なUnixユーティリティです。 タール はコマンドラインアーカイブツールであり、 pv 、パイプビューアの略で、データの進行状況を監視するために使用されます。それでは、2つのLinuxシステム間で大きなファイルをすばやく転送する方法を紹介します。思ったほど難しくはありません。続きを読む。
ダウンロード -無料の電子書籍:「システム管理者向けの6つの便利なLinuxコマンドラインツール」GNU/Linuxの2つのシステム間でネットワークを介して大きなファイルをすばやく転送する
システムに「netcat」および「pv」ユーティリティがインストールされていることを確認してください。まだインストールされていない場合は、以下のようにインストールできます。 「tar」パッケージは、ほとんどのLinuxシステムでデフォルトで使用できるため、インストールする必要はありません。
Arch Linuxとその派生物について:
$ sudo pacman -S netcat pv
RHEL、CentOS、Fedoraの場合:
$ sudo yum install epel-release
$ sudo yum install nc pv
または、
$ sudo dnf install nc pv
Debian、Ubuntu、Linux Mintの場合:
$ sudo apt-get install netcat pv
次に、2つのシステム間で大きなファイルをすばやくコピーする方法を見てみましょう。
これを行うには、次のコマンドを rootとして実行します。 受信ノードのユーザー (宛先システム):
# netcat -l -p 7000 | pv | tar x
送信ノード (ソースシステム)、このコマンドを rootとして実行します ユーザー:
# tar cf - * | pv | netcat 192.168.1.105 7000
ここでは、 192.168.1.105 私の宛先システムです。 tar cf-* 現在の作業ディレクトリ内のすべてを宛先システムにコピーし、ファイルはもう一方の端で抽出されます。
注: RHEL、CentOSシステムでは、 "nc"を使用します 以下に示すように「netcat」の代わりに。また、ポートを追加する必要があります "7000" ターゲットシステムのiptables/firewall-cmdに移動します。
ターゲットシステムにポートを追加した後、以下に示すように、より大きなファイルを転送できます。
宛先システム:
# nc -l -p 7000 | pv | tar x
ソースシステム:
# tar cf - * | pv | nc 192.168.1.105 7000
また、以下のように特定のファイルを指定することもできます。
# tar cf - /home/sk/test.file | pv | netcat 192.168.1.105 7000
両方のシステムにnetcatがインストールされている必要があることに注意してください 。さあ、コーヒーを飲みましょう。 scpなどの従来の方法よりもファイルが非常に迅速にコピーされることがわかります。
また、両側にファイル転送完了の兆候は見られません。これらのコマンドは、手動で停止するまで実行され続けます。 "du -h
Unixの2つのシステム間で大きなファイルをすばやく転送する
Unixオペレーティングシステムでは、 netcat ncと呼ばれます。したがって、ネットワークを介してシステム間で大きなファイルをコピーするには、コマンドは次のようになります。
宛先システム:
# nc -l 7000 | pv | tar -xpf -
ソースシステム:
# tar -cf - * | pv | nc 192.168.1.105 7000
繰り返しますが、これらのコマンドはrootとして実行する必要があります ユーザー。また、ソースシステムと宛先システムの両方にnetcatとpvがインストールされている必要があります。 netcatとtarを使用してLAN経由で大きなファイルを転送すると、実際に多くの時間を節約できます。
免責事項: この方法にはセキュリティがありませんことに注意してください 。上記の例でわかるように、どちらの側にも認証がないためです。知っておく必要があるのは、宛先システムのIPアドレスだけです。 netcatを使用してファイルを転送することは、保護されたネットワーク内でのみ推奨されます 。セキュリティに偏執的である場合は、 scpを使用することを強くお勧めします コマンド。
セキュリティが非常に重要な場合は、 Rsyncを使用できます ファイルを安全に転送します。
$ rsync -ravz /path/to/source/files/ destination-ip:/path/on/destiny
ありがとう: Ppnman
それでおしまい。大きなファイルをすばやくコピーする他の方法を知っていますか?以下のコメントセクションで共有してください。