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 システムの最適化 (カーネルの最適化) に関するいくつかの提案

スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

Python MySQL データベース テーブルの変更とクエリ

Python は MySQL に接続してデータベース テーブルを変更およびクエリします。 pytho...

Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

まず使用しているカーネルのバージョンを確認してくださいlin@lin-仮想マシン:~$ uname ...

JS が WeChat の「クソ爆弾」機能を実装

みなさんこんにちは、Qiufengです。最近、WeChatは新しい機能をリリースしました(WeCha...

Linux システム ディレクトリ sys、tmp、usr、var の詳細な説明。

Linux 初心者から Linux マスターへの成長の道: Linux システム ディレクトリ s...

CentOS 7.5 が Varnish キャッシュサーバー機能を導入

1. ワニスの紹介Varnish は、高性能なオープンソースのリバースプロキシサーバーおよび HTT...

JavaScript プログラムのループ構造の詳細な説明

目次構造を選択ループ構造その間…しながらforループ…のために…で…の…のためにまとめループの終了壊...

MySql バッチに挿入するときにデータの重複を避ける方法

目次序文1. ignore を挿入2. 重複キーの更新時3. を置き換える要約する序文Mysql は...

MySQLの大規模テーブル最適化ソリューションについての簡単な説明

背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...

IE6 の歪み問題

質問: <form...> の下の <input type="hidde...

Nginx ストリーム構成プロキシ (Nginx TCP/UDP ロード バランシング)

序章nginx が優れたリバース プロキシ サービスであることは誰もが知っています。nginx を使...

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...

Win7 システムでの MySQL 5.7.11 の詳細なインストール チュートリアル

オペレーティング システム: Win7 64 ビット Ultimate Edition MySQL ...

CentOS6.8 中国語/英語環境切り替えチュートリアル図

1. はじめに英語に慣れていない人は、システムを英語から中国語に変更したいかもしれません。一方、クラ...