UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

ファイルをsplitコマンドで分割してcatで連結しmd5で確かめる

ファイルをsplitコマンドで分割してcatで連結しmd5で確かめる


0.改訂履歴

  • 2007.10.10 新規作成

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$ 

4.復元してみる

  • 分割したしたデータを確認する.
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>
  • ハッシュ値が同じなので,中身が同じであると確認できる.


広告スペース
Google