圧縮tar.gzファイルをダウンロードできますか?

圧縮tar.gzファイルをダウンロードできますか?

10GBを超える巨大なディレクトリを圧縮していますが、圧縮に時間がかかります。ただし、これまで別の新しいサーバーにダウンロードする必要があります。

それでは、圧縮中に他のサーバーからファイルをダウンロードできますか?ダウンロード後は正常に使用できますか?

答え1

tar、gzip、tee、nc を使用して、サーバーに 1 つ、クライアントに 1 つという 2 つのコマンドを使用して、これらすべてを実行できます。

サーバーから: tar cf - dirname/ | gzip -c - |tee dirname.tar.gz | nc -l 3333

クライアントから nc serveraddress 3333 > dirname.tar.gz

ncは、ネットワークで使用されているcatのように動作する便利なツールであるnetcatを表します。 nc -l 3333ローカルポート3333にリスニングソケットが作成され、stdinの内容がここに接続しているユーザーにストリーミングされます。

nc serveraddress 3333サーバーへのTCP接続はポート3333で確立され、ソケット接続で受信されたすべてのコンテンツはstdoutにストリーミングされます。

これは、さまざまなコマンドチェーン(tar/gzip/teeなど)の実行中に他のコンピュータからファイルを転送する非常に簡単な方法です。

答え2

rsync既存の圧縮プロセスをダウンロードできるかどうかはわかりませんが、この--inplaceディレクティブで使用できます。ホストが圧縮プロセスを完了するまで、この操作を繰り返す必要があります。圧縮が完了した後に変更の最終デルタを取得するには、圧縮を再実行する必要があります。

別の方法は、アーカイブを作成するときにファイルのダウンロードを直接開始することです。

ssh user@host "tar cf - /path/to/files|gzip -c -| \
tee /path/to/compressed_file" > /path/to/local_compressed_file

上記のコマンドは、tarにアーカイブを作成しstdout、ストリームを圧縮し、ファイルをホストに書き込むためにstdout使用し、再びローカルコピーに保存できます。teestdout

関連情報