core-agent-linux/qubes-rpc/qubes.Restore

35 lines
956 B
Plaintext
Raw Normal View History

echo Starting Restorecopy >2
read args
read paths
echo Arguments: $args >2
echo Paths: $paths >2
if [ -f "$args" ] ; then
echo "Performing restore from backup file $args" >2
TARGET="$args"
echo "Copying $TARGET to STDOUT" >2
/usr/lib/qubes/tar2qfile $TARGET $paths
else
echo "Checking if arguments is matching a command" >2
COMMAND=`echo $args | cut -d ' ' -f 1`
TYPE=`type -t $COMMAND`
if [ "$TYPE" == "file" ] ; then
tmpdir=`mktemp -d`
mkfifo $tmpdir/backup-data
echo "Redirecting $args to STDOUT" >2
# Parsing args to handle quotes correctly
# Dangerous method if args are uncontrolled
eval "set -- $args"
# Use named pipe to pass original stdin to tar2file
$@ > $tmpdir/backup-data < /dev/null &
retcode=$?
/usr/lib/qubes/tar2qfile $tmpdir/backup-data $paths
wait
rm $tmpdir/backup-data
rmdir $tmpdir
exit $retcode
else
echo "Invalid command $COMMAND" >2
exit 1
fi
fi