圧縮しながら転送するコマンド

アプリケーションのlogディレクトリ等、巨大なディレクトリが
ディスク容量を圧迫していて、しかもディスクの空き容量がなく、
圧縮することもできない場合(圧縮時のテンポラリー領域も確保
できない状況)に、下記方法で他のサーバに圧縮しながらデータを
転送することができます。

◆ディレクトリをgzipで圧縮しながらリモートサーバのディレクトリ
 にコピーを作成。
tar cvfz - ディレクトリ | ssh サーバ ‘cat > ファイル.tar.gz’

 コマンド例:logsディレクトリをリモートサーバのhoge01.localdomainの
       /tmp以下に、logsディレクトリを固めて、圧縮して転送する。
`tar cvfz - logs | ssh hoge01.localdomain ‘cat > /tmp/logs.tar.gz’`


bzip2で圧縮しながらの場合、
tar cvfj - ディレクトリ | ssh サーバ ‘cat > ファイル.tar.bz2’

`tar cvfj - logs | ssh hoge01.localdomain ‘cat > /tmp/logs.tar.bz2’`

環境にもよりますが、ファイルを移動したいサーバにディスク容量の
余裕があるのであれば、転送してから圧縮した方が早いかもしれません。

参考までに、私の環境では84GBの大量のテキストファイルを含んだ
ディレクトリをbzip2で圧縮しながら転送したところ、約5時間かけて
圧縮しながら転送完了し、圧縮後は8.7GBでした。

圧縮しながら転送するコマンド: 仕事を早く片付けて遊ぶための技術メモ

すごく助かった・・・・

ncftp で get -R hoge ってしてもディレクトリ構造的にうまく行かないときにこれで退避できた・・・

リアクション