#!/bin/bash # import functions library source rescue_common tmpdir="/tmp/flash-rescue-root" rootdir="$tmpdir/pen" function prepare() { mkdir -p $rootdir if ! mount_usbroot $rootdir; then return 1 fi if [ x"$version" = x"1.0" ]; then mkdir -p $tmpdir/shared if ! mount_sharedroot $tmpdir/shared; then return 1 fi fi if [ ! -d $dir ]; then mkdir $dir fi return 0 } function doit() { clear echo echo -n 'Creating backup file. This can take some time: ' bzip2 -c $loop > $target 2> /tmp/rescue-backup.err & sleep 2 while ps | grep -q bzip2; do progress done sync echo echo errsize=$(ls -la /tmp/rescue-backup.err | cut -d' ' -f5) if [ $errsize -ne 0 ]; then echo "Error compressing user files into $target" return 1 else echo 'Backup file created!' fi echo return 0 } function cleanup() { if [ x"$version" = x"1.0" ]; then umount $tmpdir/shared > /dev/null 2>&1 rmdir $tmpdir/shared fi umount $rootdir > /dev/null 2>&1 rmdir $rootdir $tmpdir 2> /dev/null return 0 } clear trap cleanup SIGINT version="" if ! insert_pendrive; then exit 1 fi if [ x"$version" = x"1.0" ]; then dir="$tmpdir/shared/backup" loop="$rootdir/loopbacks/system.loop" else dir="$rootdir/backup" loop="$rootdir/.loopbacks/system.loop" fi file="backup-$(date +%Y%m%d).bz2" target="$dir/$file" if ! prepare; then cleanup exit 1 fi if ! doit; then cleanup exit 1 fi cleanup exit 0