add -i flag to shrink first and copy after
This commit is contained in:
parent
bb3982edfd
commit
ae83ca90ef
26
pishrink.sh
26
pishrink.sh
|
@ -1,12 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
usage() { echo "Usage: $0 [-s] imagefile.img [newimagefile.img]"; exit -1; }
|
usage() { echo "Usage: $0 [-s] [-i] imagefile.img [newimagefile.img]"; exit -1; }
|
||||||
|
|
||||||
should_skip_autoexpand=false
|
should_skip_autoexpand=false
|
||||||
|
force_inplace_and_copy_after=false
|
||||||
|
|
||||||
while getopts ":s" opt; do
|
while getopts ":s:i" opt; do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
s) should_skip_autoexpand=true ;;
|
s) should_skip_autoexpand=true ;;
|
||||||
|
i) force_inplace_and_copy_after=true ;;
|
||||||
*) usage ;;
|
*) usage ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -36,7 +38,7 @@ if (( $? != 0 )); then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Copy to new file if requested
|
#Copy to new file if requested
|
||||||
if [ -n "$2" ]; then
|
if [ -n "$2" -a "$force_inplace_and_copy_after" = false ]; then
|
||||||
echo "Copying $1 to $2..."
|
echo "Copying $1 to $2..."
|
||||||
if [[ -f $img ]]; then
|
if [[ -f $img ]]; then
|
||||||
cp --reflink=auto --sparse=always "$1" "$2"
|
cp --reflink=auto --sparse=always "$1" "$2"
|
||||||
|
@ -162,3 +164,21 @@ if [[ -f $img ]]; then
|
||||||
aftersize=`ls -lah $img | cut -d ' ' -f 5`
|
aftersize=`ls -lah $img | cut -d ' ' -f 5`
|
||||||
echo "Shrunk $img from $beforesize to $aftersize"
|
echo "Shrunk $img from $beforesize to $aftersize"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Copy to new file if requested
|
||||||
|
if [ -n "$2" -a "$force_inplace_and_copy_after" = true ]; then
|
||||||
|
echo "Copying $1 to $2..."
|
||||||
|
if [[ -f $img ]]; then
|
||||||
|
cp --reflink=auto --sparse=always "$1" "$2"
|
||||||
|
else
|
||||||
|
imgsize=`parted -m $img unit B print | tail -1 | cut -d ':' -f 3 | tr -d 'B\n'`
|
||||||
|
imgsize=`expr $imgsize + 1`
|
||||||
|
dd if="$1" of="$2" conv=sparse count=$imgsize iflag=count_bytes bs=1M
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $? != 0 )); then
|
||||||
|
echo "ERROR: Could not copy file..."
|
||||||
|
exit -5
|
||||||
|
fi
|
||||||
|
img=$2
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue