Ventoy/VBLADE/vblade-master/sparsefile

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"