Linuxで大きなファイルを素早くコピーする方法

Linuxで大きなファイルを素早くコピーする方法

データをコピー

リモートでデータをコピーする場合、通常は rsync コマンドを使用しますが、小さなファイルを大量にコピーすると、rsync の転送速度が遅くなります。この問題は、tar pv lz4 を使用して転送をパッケージ化して圧縮することで解決できます。この方法を使用することは、scp と rsync を使用して大きなファイルを転送することと同じです。

実際のテストでは、rsync を使用して 1200G を転送しました。1 つのファイルのサイズは数十 KB ~ 2GB です。ギガビット ネットワーク カードでは、帯域幅を完全に活用するには 6 つの rsync を同時に実行する必要があります。各 rsync の速度は約 20MB で、速度の変動が大きくなります。 1分間に約4.5GBコピー可能です。

しかし、tar pv lz4 を使用すると、実行するのは 1 回だけで済み、速度の変動も小さくなります。 1分間に約6.8GBコピー可能です。

Rsyncの使用例

rsync インストール: yum install -y rsync

# プッシュ [root@vm5 ~]# rsync -auvzP -e "ssh -p22" mssh.tar.gz [email protected]:/data/
増分ファイルリストの送信
mssh.tar.gz
     1,977 100% 0.00kB/秒 0:00:00 (xfr#1、to-chk=0/1)
送信 2,069 バイト 受信 35 バイト 4,208.00 バイト/秒
合計サイズは1,977、スピードアップは0.94

# [root@vm5 ~] をプル# rm -f mssh.tar.gz
[root@vm5 ~]# rsync -auvzP -e "ssh -p22" [email protected]:/data/mssh.tar.gz 。
増分ファイルリストの受信
mssh.tar.gz
     1,977 100% 1.89MB/秒 0:00:00 (xfr#1、to-chk=0/1)
送信 43 バイト 受信 2,069 バイト 4,224.00 バイト/秒
合計サイズは1,977、スピードアップは0.94

パラメータ auvzP の説明: パラメータ a はファイル属性を保持するアーカイブ転送です。u は更新転送であり、ソース ファイルの変更時刻が新しい場合は転送されます。 v は詳細なプロセスの表示、z は圧縮された送信、P はブレークポイントの送信を意味します。

注意: rsync がフォルダーを転送する場合、フォルダー / に / があれば、ディレクトリ内のファイルが転送されます。/ がない場合は、フォルダーも転送されます。

圧縮伝送を使用する

pv および lz4 ツールをインストールする

注: これはサーバーの両端にインストールする必要があります。

pvはyumソースには含まれていませんが、pvの公式ウェブサイトで見つけることができます。

# pv の公式 Web サイトにアクセスし、rpm パッケージ リンクを取得して、rpm コマンド [root@vm5 ~]# rpm -ivh http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm で直接インストールします。
http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm を入手してください。
警告: /var/tmp/rpm-tmp.mFbA6u: ヘッダー V3 DSA/SHA1 署名、キー ID 3fc56f51: NOKEY
準備中... ################################### [100%]
アップグレード/インストール中...
  1:pv-1.6.6-1 ###################################### [100%]
  
# lz4 は yum [root@vm5 ~] で直接インストールできます# yum install -y lz4

使用

[root@vm5 ~]# time tar -c go |pv |lz4 -B4 |ssh -p22 -c aes128-ctr 192.168.176.11 "lz4 -d |tar -xC /data/"
64 KBのブロックを使用する
18.1MiB 0:00:00 [49.5MiB/秒] [ <=> ]
実数 0分0.376秒
ユーザー 0m0.080s
システム 0分0.108秒
# rsyncとの比較
[root@vm5 ~]# time rsync -auvzP -e "ssh -p22" go 192.168.176.11:/data/
......
送信 11,741,677 バイト 受信 10,451 バイト 7,834,752.00 バイト/秒
合計サイズは18,502,481、スピードアップは1.57
実数 0分1秒130秒
ユーザー 0m0.797s
システム 0分0.160秒
[root@vm5 ~]#

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で AIDE に基づいてファイルシステムの整合性を検出する方法
  • Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明
  • Linuxシステムにおける仮想デバイスファイルのさまざまな実用的な使用法の詳細な説明
  • Linux で実行可能ファイルを実行するときに「そのようなファイルまたはディレクトリはありません」というプロンプトが表示される場合の解決策
  • Linuxファイル削除後にスペースが解放されない問題の詳しい説明
  • Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]
  • Linux でのファイル コンテンツの重複排除と交差と差異の実装

<<:  MySQL を使用した分散ロックの実装

>>:  uniapp 要素ノードスタイルの動的変更の詳細な説明

推薦する

Linux 上の LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプト

最近、LAN 内のすべてのホスト名を一覧表示する必要があります (SMB プロトコル)。しかし、fi...

Vueスロットの実装原理についての簡単な説明

目次1. サンプルコード2. 現象を通して本質を見抜く3. 実施原則4. 親コンポーネントのコンパイ...

mysqlは時間を自動的に追加し、時間を自動的に追加および更新する操作を実装します

時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...

Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順

目次1. CentOS 7.9 20にDockerをインストールする2. MySQL クラスターをデ...

CSS 擬似要素::マーカーの詳細な説明

この記事では、CSS ::markerの興味深い疑似要素を紹介します。これを使用すると、テキスト番号...

ハイパーリンクAタグを学ぶ

聞く: CSS を使用してハイパーリンクのスタイルを設定しましたが、ホバーしても機能しません。なぜこ...

VMware Workstation 15 Pro に Ubuntu 1804 をインストールするチュートリアル (画像とテキスト付き)

このメモはインストール チュートリアルです。実用的な意味はありません。記録のためだけに書いています。...

javascript 入力画像のアップロードとプレビュー、FileReader プレビュー画像

FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...

Viteプロジェクトを作成する手順

目次序文yarn create は何をしますか?ソースコード分析プロジェクトの依存関係テンプレート構...

不規則な絵の滝の流れ原理の分析と応用

プロジェクトで発生した不規則な絵画壁のレイアウト問題は、次のように分析されます。 1.img dis...

Nest.js 認証検証方法の例

目次0x0 はじめに0x1 RBAC 実装0x2 クレームベースの承認0x3 統合 CASL 0x4...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

UbuntuでGRUBの起動時間を変更する

grubの起動時間を変更するためのオンライン検索は基本的に/etc/default/grubを変更す...