Use temporary directories for mounting #102

Open
matthijskooijman wants to merge 3 commits from matthijskooijman/temp-mount-dir into master
2 changed files with 34 additions and 19 deletions

View File

@@ -85,9 +85,7 @@ then
apt-get install -y --no-install-recommends $need_packages
fi
clone=/mnt/clone
clone_src=/mnt/clone-src
clone_log=/var/log/$PGM.log
export clone_log=/var/log/$PGM.log
HOSTNAME=`hostname`
@@ -993,6 +991,25 @@ then
exit 0
fi
export clone=$(mktemp --tmpdir --directory rpi-clone-dst.XXXXXX)
export clone_src=$(mktemp --tmpdir --directory rpi-clone-src.XXXXXX)
if ! [ -n "$clone" -a -d "$clone" -a -n "$clone_src" -a -d "$clone_src" ]
then
echo "Failed to create temporary mount directories"
echo "Aborting!"
exit 1
fi
# Make sure we cleanup on exit, regardless of how we exit
cleanup() {
umount "$clone" 2> /dev/null
umount "$clone_src" 2> /dev/null
rmdir "$clone"
rmdir "$clone_src"
}
trap cleanup EXIT
# dst_mount_flag enumerations:
live=1
temp=2
@@ -1248,16 +1265,6 @@ unmount_or_abort "$mounted_dev" \
mounted_dev=$(findmnt /mnt -o source -n)
unmount_or_abort "$mounted_dev" "$mounted_dev is currently mounted on /mnt."
if [ ! -d $clone ]
then
mkdir $clone
fi
if [ ! -d $clone_src ]
then
mkdir $clone_src
fi
# Do not include a dhpys swapfile in rsync. It regenerates at boot.
#
if [ -f /etc/dphys-swapfile ]

View File

@@ -4,11 +4,13 @@
# eg: sudo rpi-clone-setup bozo
#
# This script is automatically run by rpi-clone (when it is given -s options)
# to setup an alternate hostname. A cloned file system mounted on /mnt/clone
# is expected unless testing with the -t option.
# to setup an alternate hostname. It expects $clone to be set in the
# environment containing the path to a mounted cloned file system unless
# testing with the -t option.
#
# Or, this script can be run by hand at the end of a clone when rpi-clone
# pauses with the cloned file systems still mounted on /mnt/clone.
# pauses with the cloned file systems still mounted (make sure to set
# the $clone env variable properly, then).
#
# Or, run this script by hand with -t to process files in test directories
# under /tmp/clone-test. Run -t and look at the files to see if the files
@@ -27,7 +29,7 @@
file_list="etc/hostname etc/hosts"
clone=/mnt/clone
# $clone is set by caller
clone_test=/tmp/clone-test
PGM=`basename $0`
@@ -81,9 +83,15 @@ fi
echo -e "\t$newhost\t- target hostname"
if ((!testing)) && [ ! -d /mnt/clone/etc ]
if ((!testing)) && [ -z "$clone" ]
then
echo "A destination clone file system is not mounted on /mnt/clone"
echo "No clone mountpoint was passed in the \$clone variable"
echo "Aborting!"
exit 0
fi
if ((!testing)) && [ ! -d "$clone/etc" ]
then
echo "A destination clone file system is not mounted on $clone"
echo "Aborting!"
exit 0
fi