私はビッグデータを扱っており、64TBを超えるディレクトリを保管する必要があります。私のファイルシステムにこのような大きなファイル(アーカイブ)を作成することはできません。残念ながら、Linuxで複数の部分からなるアーカイブを作成するために提案されているすべてのソリューションは、まずアーカイブを作成してから、コマンドを使用してsplit
それをより小さなファイルに分割することをお勧めします。
fe 7zipが可能であることを知っていますが、残念ながらRedHat 6に組み込まれているツールtar、gzip、bzip2...を使用する必要があります。
ユーザーに最大ボリュームサイズを要求するスクリプトを作成する方法を知りたいです。 gzipを使用して各ファイルをアーカイブし、大きすぎるファイルを分割し、選択したサイズの複数のtarファイルに手動でマージします。これは良い考えですか?
基本的なLinuxコマンドを使用して大容量ファイルのパーティション化を実行する他の方法はありますか?
修正する:
最大ファイルサイズ制限があるファイルシステムでこのソリューションをテストし、動作します。tar
出力をコマンドに直接リダイレクトするパイプは、期待split
どおりに機能します。
tar -czf - HugeDirectory | split --bytes=100GB - MyArchive.tgz.
生成されたファイルはすでに小さいため、マージしても大きすぎるファイルは生成されません。
cat MyArchive.tgz* | tar -xzf -
答え1
圧縮アーカイブを保存するのに十分なスペースがある場合は、一度にアーカイブを作成して分割できます(GNUと仮定split
)。
tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G
これにより、etcという名前のファイルが生成されxaa.gz.part
、xab.gz.part
各ファイルはアーカイブの1G圧縮ビットですtar
。
アーカイブを抽出するには:
cat x*.gz.part | tar -x -vz -f -
ファイルシステムが圧縮アーカイブを保存できない場合は、アーカイブ部分をいくつかのリモート場所に置き換えて別のファイルシステムに書き込む必要があります。
対応するリモートの場所では、たとえば、次のようになります。
ssh user@serverwithfiles tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G
これにより、ssh
圧縮されたアーカイブが大きなディレクトリを持つコンピュータからローカルコンピュータに転送され、分割されます。
答え2
デフォルトのUNIXコマンドでは、既存のファイルを分割する以外に他の方法はありません。
ただし、star
マルチボリューム機能をインストールして使用する場合はどうですかstar
?
これには、部品が正しい順序で供給されていることを確認する利点があります。