エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

任意の容量のファイルを生成したいとき

やりたかったこと

  • 任意の容量のファイルを生成したい
    • 背景としてファイルのアップロード処理における容量制限の手動テストをしたかった

動作環境

macOS, Linuxのターミナル、もしくはWindowsのGit Bashなら動作します

生成方法

# 乱数で構成された1KBのテキストファイルを生成する
$ base64 /dev/urandom | head -c 1000 > ./testfile.txt

# 生成されたか確認する
$ ls -l
total 4
...
-rw-rw-r-- 1 ec2-user ec2-user 1000 Apr 25 13:46 testfile.txt
...

コマンドの解説

base64 /dev/urandom

/dev/urandomで疑似乱数を取得し、base64Base64エンコードをしています。

/dev/urandomで取得できるランダム値はバイナリですが、Base64エンコードをすることでテキストとして扱えるようになります。

試しにtestfile.txtの中身を覗いてみると以下のようになっています。

$ cat testfile.txt
3DpGlb38eADUOZ77efFn8wfbArSBUg1+sewRT6mjFx9wJoEbdoSc94aabtyCTLYHTNXG93ME1iku
iJpHQoaGZjnBierOKYX2OQbKR8DAf8uYw5VLq74mhUGQKS6+9pp4yyG+eg754Kuz8UTaToCnNaJP
UAeCM4/oGVZJhE+DPvg86UZRxcsGTsmuAXXivVamxCZlwMJg0rkboSOZ2vxnDFl3JTB/FbvmyeHI
YfO8NEGWTrMZFJJqAOJ230fwUZAv4aLqGpdmFusSuaiptKibVR+H8ci8+oWmosi8tDfNHlval8yO
vM4I8KdVIRflZNPc05UU3qFgarkY3q7yNmJyU0q9nFzet3lsLfzFQ3HSCOzUCh/aOU5NPzRoLrgd
K1cEK4yWsuRauUr0EEHdLaF5+WjOu/41KR8zr1WO73q9dckDfcxyihfqKdqu1eGCX6h5KU6FmH2P
Ej41j+lP2TIYN11x/n5dlHShyv+hZy9F9VnW4mkrNOoCU7Uw/rv9GPf5FDLlNK3pZ7/0sxcQql4x
dpv0aNephMNWsaH4nPq8uAZ1WLN88MlDFQU2qPb5mUKKOHYawDLnq5UJaav/bFjzuXzYvuhauLKx
meAjuGBZrJVDOLnStIT7ictt15waWthMFhdyHcthrfZaE75kJJBQX8FMClOGpXvXCEdVKMfs96Og
bqV+9tqkcl0v7TXF8w+f0gPlISlmAkcS0vXaGsMcfcMy6fKOnf2CwxyWN/mhxvwZHWaA4/wlHtUz
zg098OaHPxGkmnkT0jZYvscHCfF1tYuBh4KWS+kkDIBpJC8aSkyoZ3izG/uULrlMgljilgnkEIt9
3WAOa+Wq40fb+i+0ifEsI2urGMHpOdGlv9sS7j4giEBQJYWc0MRflaEcyPCHOrGTyOzeif2yejiA
cjSgoh+UEQtn7zTswHAWZx/u8utGc65HzMt4oPvVHqfLiBlO1fxhTe6jDlciA6NTauC/4SLEe0I7

head -c 1000

先頭から1000byte分の値を抜き出します。

パイプでbase64 /dev/urandomと組み合わせることによって、Base64エンコードしたテキストの先頭1000byte分だけを抜き出しています。

あとがき

コマンドを叩くと問答無用でファイル生成するので、head -c ****で指定するbyte数を間違えないように気を付けましょう。

私は間違えて1GBのファイルを生成しました🤤