web-dev-qa-db-ja.com

大きなファイルを小さな部分に分割する方法は?

大きなファイル(たとえば8GB)があります。それを複数の部分に分割するにはどうすればいいですか?3つの等しい部分としましょう。その後、それらを後でどのように統合しますか?

187
karthick87

これを実現するにはいくつかの方法があります。基本的なものから始めましょう。

splitおよびcatコマンドの使用:

画像があり、大きすぎる(10MB)と言います。私がしているのは:

split --bytes=1M /path/to/image/image.jpg /path/to/image/prefixForNewImagePieces

そして、それをまとめるために猫を使用します:

cat prefixFiles* > newimage.jpg

例えば:

画像があるフォルダ内にいると仮定します:

split --bytes=1M myimage.jpg new

画像がimagesというディレクトリ内にある場合、これも実行できます。

split --bytes=1M images/myimage.jpg new

イメージがディレクトリ/ home/cyrex/images内にある場合、これを実行できます。

split --bytes=1M /home/cyrex/images/myimage.jpg new

(上記のすべての場合で、myimage.jpgを1MBの断片に分割し、断片の名前の前にWordを追加します。したがって、それらはnewaanewabnewacnewad...のようになります。)

テキストファイルを分割していて、行で分割する場合は、次のようにします。

split -l 1000 book.txt new

これは、テキストファイルをそれぞれ1000行の出力ファイルに分割します。これはファイルを分割する別の方法であり、主にログ、SQLダンプ、csvファイルなどのテキストファイルに使用されます。

次に、それらをマージします

cat new* > newimage.jpg

これは一つの方法です。分割されたピースのサイズを変更することもできます。 --bytes=1Mという部分を1キロバイトの場合は--bytes=1Kに、ギガの場合は1Gに、または4KBの場合は--bytes=4Kのような別の数字を変更するだけです。

Nautilusの使用

別の方法は、NautilusのGUIの圧縮オプションです。圧縮するファイルをより小さなメガバイトサイズに分割するオプションが提供されます。そのシンプルで簡単。

さらに別の方法は7zを使用することです

ubuntu.isoというISOイメージがあると仮定すると、これを行うことができます。

7z a -v5m -mx0 ubuntu.7z ubuntu.iso

これにより、ubuntu.isoから5MBのサイズのファイルが作成されます。 -v5mはボリュームサイズであるため、10、12、1、3に変更できます。また、キロバイトなどではmをkに変更できます。 -mx0スイッチは、7-Zipに圧縮を使用しない、つまり、データを部分に分割するように指示します。

抽出するには

7z x ubuntu.7z.001

この方法で最初のファイルを抽出すると、7zは次のファイルから順番に抽出を開始します。あなたもできる

7z e ubuntu.7z.001

ここでも同じ効果があります。

270
Luis Alvarado

適切な番号でsplit -bを使用すると、3つのピースを取得できます。

番号は次のとおりです。

size=$(wc -c <"file name")
one_third=$((size/3+1))

再構築するには、catを使用します

cat "file name"* > "file name"

マニュアルページは詳細を記入するのに役立ちます。

10
enzotib

HJSplit

ファイルを分割および再結合するための一般的なフリーウェアプログラムです。このプログラムは、Windows、Linux、およびその他のさまざまなプラットフォームで利用可能です。

Linux用のHJSplitは、完全なグラフィカルユーザーインターフェイスを備えたLinux用のフリーウェアファイルスプリッターです。 HJSplitは、100ギガバイトを超えるファイルサイズ、分割、結合/再結合、MD5チェックサム、ファイル比較、「インストールなしで実行」をサポートし、プログラムは完全に移植可能です。

Linux用のHJSplitはインストールする必要がなく、特別なライブラリに依存しません。 hjsplitlx.tar.gzアーカイブを任意のディレクトリに抽出し、Linuxファイルマネージャーまたはターミナルウィンドウからプログラムを起動するだけです。プログラムのファイル許可を「実行可能」に調整する必要がある場合があります。

enter image description here

4
Uri Herrera

Gnome split? http://gnome-split.org/

GNOME Splitは、ファイルを分割して元に戻すことができるツールです。 Javaで記述され、GTK +ユーザーインターフェイスを使用します(Java-gnomeプロジェクトのおかげです)。目標は、複数のファイル形式(Xtremsplitなど)を処理できる同様のプロジェクトのネイティブ実装を提供することです。

http://www.omgubuntu.co.uk/2010/08/split-large-files-easily-in-ubuntu-with-gnome-split/

4
Frank Zafka

HOZ-Hacha Open Zource v1.65- http://hoz.sourceforge.net/

enter image description here

開発者から:

OZは、「ファイルスプリッター」と呼ばれるものです。そのファイル形式は、スペインとラテンアメリカでよく知られている「Hacha」ソフトウェアで使用されているものと同じです。 HOZは、「Hacha」互換スプリッターのオープンソースでポータブルなC実装です。

HOZは「Hacha」よりも小さくて高速です。

ところで、「hoz」はスペイン語で「鎌」であり、「hacha」は「axe」のスペイン語であるため、「Z」を「Zource」で「S」の代わりに使用しました...

インストール後、ターミナルにghozをドロップしてHoz GUIを使用できます。操作は非常に簡単なので、説明は必要ありませんが、開発者のサイトで詳細を確認できます。

幸運を!

WoodCutter

Javaで開発された無料のファイル分割およびマージユーティリティ。これは、ユーザーが任意のタイプのファイルをKB、MB、またはGBの小さなサイズに分割できるようにする小さなサイズのアプリケーションです。

LinuxおよびWindowsで利用可能です。

WoodCutterには、元のファイルをマージする3つの方法があります。 WoodCutterはマージファイルを作成し、WoodCutterアプリケーションで処理してすべてのファイルを結合します。分割ファイルの受信者にWoodCutterがインストールされていない場合、WoodCutterはファイルをマージするためのバッチファイルとシェルスクリプトファイルも作成するため、元のファイルも取得できます。バッチファイルはWindowsプラットフォームで使用され、シェルスクリプトはLinuxプラットフォームで使用されます。

http://Java-puzzle.blogspot.com/2009/07/woodcutter.html

0
Manas

split --number

これは同じサイズのN個のファイルを生成するのに適したオプションです。ただし、最後のファイルは分割できないために大きくなる可能性があります。例えば。:

printf '0123456789' > f.txt
split -d --number 2 f.txt f.txt.part.
tail f.txt.part.*

与える:

==> f.txt.part.00 <==
01234
==> f.txt.part.01 <==
56789

そして:

split -d --number 3 f.txt f.txt.part.
tail f.txt.part.*

与える:

==> f.txt.part.00 <==
012
==> f.txt.part.01 <==
345
==> f.txt.part.02 <==
6789

https://askubuntu.com/a/54584/52975 で言及された-b +明示的なサイズ計算と比較すると、最後のファイルは以前のものよりもほぼ2倍大きくなることがあります。このオプションの欠点。ただし、サイズの計算を自分で行う必要がないため、何度も便利です。

等しい数の行が次で尋ねられました: https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number- of-lines

split 2.28、Ubuntu 18.04でテスト済み。