backup_dir="/home/backup" # backup directory name without tailing slash full_bak="system_full" # full backup name #full_bak="old/home_full" # full backup name tmp_dir="/tmp/backup" # target folder for restored file, this folder will be removed before restoring diff_bak="system_2018-04-25" # name of diff backup #diff_bak="home_2018-04-21" # name of diff backup restore="etc" # folder to restore, without starting slash (relative path) exclude="" # folder to restore, without starting slash (relative path) extra_param="" # -e means "dry run" read -p "Delete $tmp_dir (y/n):" answer if [ $answer == "y" ]; then echo "Deleting $tmp_dir .." rm -R $tmp_dir fi if [ ! -d $tmp_dir ]; then echo "Creating new $tmp_dir .." mkdir $tmp_dir fi if [ "$restore" != "" ]; then for i in $restore ; do command="$command -g $i" done fi if [ "$exclude" != "" ]; then for i in $exclude ; do command="$command -P $i" done fi echo "Restoring $restore from full backup.." cd $tmp_dir dar -x $backup_dir/$full_bak -R $tmp_dir $command -wa -v $extra_param if [ "$diff_bak" != "" ]; then echo "Overwriting $restore from $diff_bak backup.." dar -x $backup_dir/$diff_bak -R $tmp_dir $command -wa -v $extra_param fi exit 0