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

LinuxおよびUnixでネットワーク経由で大きなファイルをすばやく転送する方法

今日、私はさまざまなアプリケーションをテストするために頻繁に使用する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 " を使用して、両方のシステムのファイルサイズを手動で確認する必要があります 指図。宛先システムのファイルサイズがソースシステムのファイルサイズと同じである場合は、ファイル転送プロセスが完了したと見なし、 CTRL + Cを押してコマンドを終了できます。 。

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

それでおしまい。大きなファイルをすばやくコピーする他の方法を知っていますか?以下のコメントセクションで共有してください。


Linux
  1. Linuxでファイルをアーカイブおよび圧縮する方法

  2. LinuxでNetcatを使用してファイルを転送する方法

  3. SCP と Rsync を使用して Linux でファイルを転送する方法

  1. ncおよびpvコマンドを使用して2台のコンピューター間でファイルを転送する方法

  2. LinuxとWindows間でSAMBAサーバーを構成してファイルを転送する方法

  3. SCPとFTPを使用してLinuxのサーバー間でファイルを転送する方法

  1. findおよびduコマンドを使用してLinuxで大きなファイルを検索する方法

  2. Linux – Unix / linux Osesの標準および/または共通ディレクトリ?

  3. Linux および Unix でファイルをコピーする方法10 cp コマンドの例