印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxWindows 大容量のダミーファイルはどう作るのか

圧縮率が高いダミーファイルはどうやって作ればいいのか。dd コマンドのゼロ埋めとランダム埋めを組み合わせて作ってみる。

■ ■ ■

オンラインストレージサービスの Dropboxがローカルのフォルダとオンラインストレージを同期させるソフトのベータ版を公開している ((2/3) - Experimental Forum Build - 1.3.13 « Dropbox Forums)。ベータテスタへの特典として,容量制限値が 5 GB 増えるというので話題になっている。ヘルプには 500 MB のアップロード毎に 500 MB ずつ増やせると書いてあるが (Dropbox - Why didn't I get my free space for beta testing the latest forum build? -),どうやら 1 GB のファイルでもいいらしい。

効率よく容量アップする方法として,ダミーファイルを使う方法が紹介されている (Dropboxベータテスト参加で追加5GBを獲得するための手っ取り早い方法 | ひとりぶろぐ)。このダミーファイルは全部で5つで,拡張子が mp4 になっているが動画ファイルではない。Dropbox は,動画ファイルとしてのフォーマットを確認することはないので,中身は何でもいいのだ。ただし,5つとも全部違わなければならない。同じファイルであるかどうかにつては,Dropbox がチェックするからである。このダミーファイルが満たす条件はいくつかある。

  • ファイルは全部で5つで,1つのファイルの容量は 1 GB (1,024,000,000 B)
  • 5つのファイルは内容が同一でないこと
  • Zip で圧縮したときに容量が小さくなること

最後の Zip 圧縮したときに容量が小さくなることは,Dropbox には関係がないが,ダウンロードして使うためには必要な条件になる。圧縮後の容量を小さくするには,ファイルの内容が単純でなければならない。例えば dd コマンドでゼロ埋めで作ってやればそれができるが (dd (UNIX) - Wikipedia),全部をゼロ埋めすると,すべてのファイルの内容が同じになってしまう。逆にランダムにすると,ファイルの内容は違うが,圧縮してもほとんど容量が変わらないことになってしまう。とすると,ランダムとゼロ埋めのハイブリッドのファイルであれば,この相反する条件が満たせるのではないか。

自分が作ろうと思ったらどうやるかと考えたオペレーションは例えば以下の通り。今回は Windows 7 上の Cygwin で行った。まずゼロ埋めした大きいファイルを作る。

$ dd if=/dev/zero of=zero999 bs=1024 count=999999
999999+0 records in
999999+0 records out
1023998976 bytes (1.0 GB) copied, 19.9311 s, 51.4 MB/s

ランダムな小さいファイルを5つ作る。

$ dd if=/dev/urandom of=dum01 bs=1024 count=1
$ dd if=/dev/urandom of=dum02 bs=1024 count=1
$ dd if=/dev/urandom of=dum03 bs=1024 count=1
$ dd if=/dev/urandom of=dum04 bs=1024 count=1
$ dd if=/dev/urandom of=dum05 bs=1024 count=1

ゼロ埋めしたファイルと結合する。

$ cat dum01 zero999 > DUMMY001.mp4
$ cat dum01 zero999 > DUMMY002.mp4
$ cat dum01 zero999 > DUMMY003.mp4
$ cat dum01 zero999 > DUMMY004.mp4
$ cat dum01 zero999 > DUMMY005.mp4

自分のためにだけなら以上で終了。DUMMY001.mp4 - DUMMY005.mp5 を Dropbox に入れればよい。他の人に効率よく渡すには,圧縮率優先で Zip 圧縮すればよい (Man page of GZIP)。

$ zip -9 DUMMY_FILES.zip DUMMY00?.mp4

これでメデタク展開すると合計 5 GB になる 5 MB の圧縮ファイルができた。

それにしても,この Dropbox のベータ版,SD カードや USB 外付けハードディスクから自動的にインポートできるというのは便利だが,ファイル名が日付時刻に自動変換されて「2012-02-07 22.42.10.mp4」のようになってしまうのは嬉しくない機能である。同じファイル名で同期して欲しいものだ。

Posted by n at 2012-02-07 22:53 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?