ファイルをsplitコマンドで分割してcatで連結しmd5で確かめる
ファイルをsplitコマンドで分割してcatで連結しmd5で確かめる
0.改訂履歴
1.はじめに
このドキュメントでは,ファイルを分割するsplitコマンドの利用手順を説明する.まずはsplitでファイル分割を実行し,catで復元した後に,元のファイルと同じものかをmd5のハッシュ値をチェックサムとして算出して検証する.
2.splitコマンドのオプション
- splitコマンドには,次のようなオプションが在る.
オプション |
説明 |
-l 行数 |
テキストファイル向け.指定した行数毎にファイルを分割する. OSによっては-nを指定する場合も在る. |
-b バイト数 |
バイナリファイル向け.指定したバイト数毎にファイルを分割. |
-a 桁数 |
分割したファイルのサフィックスの桁数を指定する. |
- 搭載しているOSによって,オプションの有無がある.
3.splitを使ってファイル分割の実行
macbook3:/work ujpadmin$ ls -la bigfile.tar
-rw-r--r-- 1 ujpadmin ujpadmin 13797357 Sep 20 04:08 bigfile.tar
macbook3:/work ujpadmin$
|
- 今回は,約13MBのファイルが対象となる.
- ファイルを1000000byte(約1MB)毎に分割する.
macbook3:/work ujpadmin$ split -b 1000000 bigfile.tar Split.test.
macbook3:/work ujpadmin$
|
- 単純計算で,14ファイル作成されているはずである.
- 分割したファイルを確認する.
macbook3:/work ujpadmin$ ls -la Split.test.*
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.aa 1
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ab 2
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ac 3
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ad 4
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ae 5
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.af 6
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ag 7
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ah 8
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ai 9
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.aj 10
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ak 11
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.al 12
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.am 13
-rw-r--r-- 1 ujpadmin ujpadmin 797357 Oct 10 12:50 Split.test.an 14
macbook3:/work ujpadmin$
|
- ファイルが分割されている事が確認できた.
- 指定したファイル名の後ろの2桁に,自動的にサフィックスがつけられている.
- 細かい単位で分割するなど,分割後のファイル数が多い場合,サフィックスで表現できる範囲を広げる事で対応する..
- 以下の例では,サフィックスを4桁にしてみる.
macbook3:/work ujpadmin$ split -b 1000000 -a 4 bigfile.tar aa.bb.
macbook3:/work ujpadmin$ ls -la aa.bb*
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaaa
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaab
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaac
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaad
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaae
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaaf
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaag
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaah
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaai
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaaj
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaak
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaal
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:53 aa.bb.aaam
-rw-r--r-- 1 ujpadmin ujpadmin 797357 Oct 10 12:53 aa.bb.aaan
macbook3:/work ujpadmin$
|
macbook3:/work ujpadmin$ ls -la Split.test.*
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.aa
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ab
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ac
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ad
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ae
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.af
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ag
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ah
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ai
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.aj
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.ak
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.al
-rw-r--r-- 1 ujpadmin ujpadmin 1000000 Oct 10 12:50 Split.test.am
-rw-r--r-- 1 ujpadmin ujpadmin 797357 Oct 10 12:50 Split.test.an
macbook3:/work ujpadmin$
|
- コンカチネイト(cat:連結)コマンドを使って,分割ファイルを連結させる.
- この時,連結はファイル名順に行われる.
macbook3:/work ujpadmin$ cat Split.test.* > Split.tar
macbook3:/work ujpadmin$
|
macbook3:/work ujpadmin$ ls -la SplitAA.tar
-rw-r--r-- 1 ujpadmin ujpadmin 13797357 Oct 10 14:47 SplitAA.tar
macbook3:/work ujpadmin$
|
macbook3:/work ujpadmin$ ls -la bigfile.tar
-rw-r--r-- 1 ujpadmin ujpadmin 13797357 Sep 20 04:08 bigfile.tar
macbook3:/work ujpadmin$
|
- ファイルサイズは,同じなので同一ファイルのようである.
- md5を使って,ハッシュ値をだしてみる.
macbook3:/work ujpadmin$ md5 bigfile.tar
MD5 (bigfile.tar) = ce5da851f1a0616513c143984e4933ec
macbook3:/work ujpadmin$ md5 SplitAA.tar
MD5 (SplitAA.tar) = ce5da851f1a0616513c143984e4933ec
macbook3:/work ujpadmin$ </pre>
|
- ハッシュ値が同じなので,中身が同じであると確認できる.