オブジェクトストレージに巨大なファイルをアップロードするとき、1ファイルあたりの容量制限が問題になることがあります。ConoHaなら5GBです。これを乗り越えるならSLO(Static Large Object)などの方法がありますが、日次世代バックアップなどでは少し面倒です。これを安直に乗り越える方法があります。

splitコマンドでファイル分割

linuxの昔からのコマンドに「split」があります。単純にファイル分割するだけのコマンドです。こんな感じになります。

$ ls -lh
合計 107M
-rwxrwx--- 1 noldor noldor 107M  7月 15 23:14 dummy.bin

$ split -b 20m dummy.bin split_dummy_

$ ls -lh
合計 213M
-rwxrwx--- 1 noldor noldor 107M  7月 15 23:14 dummy.bin
-rw-rw-r-- 1 noldor noldor  20M  7月 15 23:18 split_dummy_aa
-rw-rw-r-- 1 noldor noldor  20M  7月 15 23:18 split_dummy_ab
-rw-rw-r-- 1 noldor noldor  20M  7月 15 23:18 split_dummy_ac
-rw-rw-r-- 1 noldor noldor  20M  7月 15 23:18 split_dummy_ad
-rw-rw-r-- 1 noldor noldor  20M  7月 15 23:18 split_dummy_ae
-rw-rw-r-- 1 noldor noldor 6.2M  7月 15 23:18 split_dummy_af

引数-bは分割後のファイル容量です。5GBギリギリまで分割するなら5000mなどになります。

ファイルの結合はcatコマンド

分割したファイルの結合はcatコマンドで行います。catは猫ではなくconCATenate(コンカチネーション)の略です。

$ cat split_dummy_* >cat_dummy.bin

$ md5sum dummy.bin cat_dummy.bin
c552bc4aae577683ef52318845f2f6bd  dummy.bin
c552bc4aae577683ef52318845f2f6bd  cat_dummy.bin

これで「ファイルを分割してアップロード」「ダウンロード後にファイル結合」ができます。

tarファイルを最初から分割したい

バックアップ用途なら「tarファイルに固めてから分割してアップロード」ということになりますが、tarファイルがGB単位になるなら中間ファイルを作るディスク容量がもったいなくなります。
最初からtarを分割して作れれば中間ファイルの容量が不要になります。
もちろん、方法はあります。標準入出力とパイプです。

$ tar cz dummy.bin | split -b 10m - dummy_tgz_

$ ls -lh
合計 210M
-rwxrwx--- 1 noldor noldor 107M  7月 15 23:39 dummy.bin
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_aa
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ab
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ac
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ad
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ae
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_af
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ag
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ah
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_ai
-rw-rw-r-- 1 noldor noldor  10M  7月 15 23:43 dummy_tgz_aj
-rw-rw-r-- 1 noldor noldor 3.5M  7月 15 23:43 dummy_tgz_ak

splitコマンドの入力ファイル名を指定するところにハイフンを入れることで、入力ファイルが標準入力になります。
tarはfオプションをつけなければ出力が標準出力になります。

参考サイト