諸事情があって、圧縮したアーカイブファイルを分割して補完しておく必要が出たので、その備忘。
といっても、そんな大した事やるわけではなく、昔からあるsplitコマンドでの手法。
Linux/UNIXの場合は、splitコマンドを使えばいい。
以下のようにコマンドを実行することで、ファイルを圧縮しながら分割保存させることが出来る。
tar czvf - /アーカイブ化するディレクトリ | split -d -b 分割するバイト数 - 分割後のファイル名(連番)
[root@localhost work_1]# ls -l /work_1/ 合計 307200 -rw-r--r--. 1 root root 104857600 2月 7 04:26 test1 -rw-r--r--. 1 root root 104857600 2月 7 04:26 test2 -rw-r--r--. 1 root root 104857600 2月 7 04:26 test3 [root@localhost work_1]# [root@localhost work_1]# tar czvf - /work_1 | split -d -b 100K - /tmp/test_work_1_ tar: メンバ名から先頭の `/' を取り除きます /work_1/ /work_1/test1 /work_1/test2 /work_1/test3 [root@localhost work_1]# [root@localhost work_1]# ls -lh /tmp/test_work_1_0* -rw-r--r--. 1 root root 100K 2月 7 04:44 /tmp/test_work_1_00 -rw-r--r--. 1 root root 100K 2月 7 04:44 /tmp/test_work_1_01 -rw-r--r--. 1 root root 99K 2月 7 04:44 /tmp/test_work_1_02
既存のファイルを分割する場合は、以下のようにコマンドを実行すれば良い。
split -d -b 分割するバイト数 分割元ファイル 分割後のファイル名(連番)
で、元に戻す方法だが、これは簡単。
単に、catで分割したファイルを一括で読込し、それを別ファイルにリダイレクトで書き出すだけだ。
cat 分割後のファイル名(連番)* > 元に戻す際のファイルPATH
そのまま解凍する場合は、パイプで繋いで以下のようにコマンドを実行すれば良い。
cat 分割後のファイル名(連番)* | tar xzvf -
[root@localhost work_1]# cat /tmp/test_work_1_0* | tar xzvf - work_1/ work_1/test1 work_1/test2 work_1/test3 [root@localhost work_1]# [root@localhost work_1]# ls -lah work_1/ 合計 300M drwxr-xr-x. 2 root root 42 2月 7 17:02 . drwxr-xr-x. 3 root root 55 2月 7 17:03 .. -rw-r--r--. 1 root root 100M 2月 7 04:26 test1 -rw-r--r--. 1 root root 100M 2月 7 04:26 test2 -rw-r--r--. 1 root root 100M 2月 7 04:26 test3
Image may be NSFW.
Clik here to view.
