mirror of https://github.com/ventoy/Ventoy
37 lines
658 B
Bash
37 lines
658 B
Bash
#! /bin/sh
|
|
# sparsefile - create sparse files conveniently
|
|
#
|
|
# depends on dd and dc commands.
|
|
|
|
usage() {
|
|
echo "usage: `basename $0` {10M|10G|10T} {filename}" 1>&2
|
|
}
|
|
size=$1
|
|
if test "$size" = "-h"; then
|
|
usage
|
|
exit
|
|
fi
|
|
fnam=$2
|
|
|
|
die() {
|
|
usage
|
|
exit 1
|
|
}
|
|
set -e
|
|
units=`echo "$size" | sed 's!.*\(.\)$!\1!'`
|
|
n=`echo "$size" | sed 's!\(.*\).$!\1!'`
|
|
test "$units" && test "$n" && test "$units" != "$n" || die
|
|
case "$units" in
|
|
M)
|
|
seek=`echo "$n 1024 * 1 - p" | dc` ;;
|
|
G)
|
|
seek=`echo "$n 1024 1024 * * 1 - p" | dc` ;;
|
|
T)
|
|
seek=`echo "$n 1024 1024 1024 * * * 1 - p" | dc` ;;
|
|
*)
|
|
die
|
|
;;
|
|
esac
|
|
sh -xc "dd bs=1k count=1 if=/dev/zero of=$fnam seek=$seek"
|
|
ls -lh "$fnam"
|