tarを使用して複数のファイルをすばやく圧縮する方法

tarを使用して複数のファイルをすばやく圧縮する方法

複数のファイルをHPCクラスタに転送する必要があります。私は現在scp命令を使用していますが、1つのファイル(それぞれ〜1.4 GB)を転送するのに約10分以上かかります。 tarを使用すると転送速度が速くなることを確認しましたが、scpを使用してファイルを転送するよりもファイルを圧縮するのにはるかに長い時間がかかることを確認しました。私が使用するtarコマンドは次のとおりです。

tar -cvfz files.tar.gz files

rsyncも試してみましたが、bashがリモートサーバーにインストールされていてもrsyncを認識しないというエラーが発生し続けます。私はこの内容についてよく知りませんので、どんな助けやアドバイスでもいただければ幸いです!

ベストアンサー1

特にtarを使用すると、出力をローカルディスクに保存するのではなく、sshに簡単にパイプできます。これはビルドフルtarアーカイブを待つ必要なしにsshを介して直接ストリーミングされるため、少し高速です。

tar zcvf - files | ssh user@hostname "tar xvzf - -C /home/user"

それでも遅い場合は、圧縮をまったくしない方が良いかもしれません。

tar cvf - files | ssh user@hostname "tar xvf - -C /home/user"

ただし、ファイルを一度だけ移動する場合にのみ便利です。


-Cscpを具体的に使用する場合、圧縮を有効にするためにscpがsshに渡すフラグがあります。

部分ファイル転送をサポートし、変更されていないファイルの再アップロードをスキップする(複数のアップロードをより高速にする)rsyncを使用することにした場合は、--compress, -zマンページで検索する必要があります。

おすすめ記事