Check that any extra directories being backed up are not the same as existing ones

This commit is contained in:
Bob Mottram 2015-12-11 16:25:43 +00:00
parent 7fb07fc11d
commit a8ae880ccd
4 changed files with 106 additions and 2 deletions

View File

@ -368,6 +368,9 @@ function backup_configuration {
fi
cp -f $CONFIG_FILE /root/tempbackupconfig
cp -f $COMPLETION_FILE /root/tempbackupconfig
if [ -f $BACKUP_EXTRA_DIRECTORIES ]; then
cp -f $BACKUP_EXTRA_DIRECTORIES /root/tempbackupconfig
fi
backup_directory_to_usb /root/tempbackupconfig config
}
@ -414,6 +417,38 @@ function backup_mariadb {
fi
}
function valid_backup_destination {
destination_dir="$1"
is_valid="yes"
if [[ "$destination_dir" == "hubzilla" || \
"$destination_dir" == "hubzilladata" || \
"$destination_dir" == "gogs" || \
"$destination_dir" == "gogsrepos" || \
"$destination_dir" == "gogsssh" || \
"$destination_dir" == "gnusocial" || \
"$destination_dir" == "gnusocialdata" || \
"$destination_dir" == "mariadb" || \
"$destination_dir" == "config" || \
"$destination_dir" == "letsencrypt" || \
"$destination_dir" == "wiki" || \
"$destination_dir" == "wiki2" || \
"$destination_dir" == "xmpp" || \
"$destination_dir" == "ipfs" || \
"$destination_dir" == "dlna" || \
"$destination_dir" == "tox" || \
"$destination_dir" == "ssl" || \
"$destination_dir" == "blog" || \
"$destination_dir" == "owncloud" || \
"$destination_dir" == "owncloud2" || \
"$destination_dir" == "ownclouddata" || \
"$destination_dir" == "mailinglist" ]]; then
is_valid="no"
fi
echo $is_valid
}
function backup_extra_directories {
if [ ! -f $BACKUP_EXTRA_DIRECTORIES ]; then
return
@ -425,7 +460,12 @@ function backup_extra_directories {
backup_dir=$(echo "$backup_line" | awk -F ',' '{print $1}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
if [ -d "$backup_dir" ]; then
destination_dir=$(echo "$backup_line" | awk -F ',' '{print $2}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
backup_directory_to_usb "$backup_dir" "$destination_dir"
if [[ $(valid_backup_destination "$destination_dir") == "yes" ]]; then
backup_directory_to_usb "$backup_dir" "$destination_dir"
else
echo $"WARNING: The backup directory $destination_dir is already used."
echo $"Choose a different destination name for backing up $backup_dir"
fi
else
echo $"WARNING: Directory $backup_dir does not exist"
fi

View File

@ -127,6 +127,9 @@ function backup_configuration {
fi
cp -f $CONFIG_FILE /root/tempbackupconfig
cp -f $COMPLETION_FILE /root/tempbackupconfig
if [ -f $BACKUP_EXTRA_DIRECTORIES ]; then
cp -f $BACKUP_EXTRA_DIRECTORIES /root/tempbackupconfig
fi
backup_directory_to_friend /root/tempbackupconfig config
}
@ -439,6 +442,38 @@ function disperse_key_shares {
fi
}
function valid_backup_destination {
destination_dir="$1"
is_valid="yes"
if [[ "$destination_dir" == "hubzilla" || \
"$destination_dir" == "hubzilladata" || \
"$destination_dir" == "gogs" || \
"$destination_dir" == "gogsrepos" || \
"$destination_dir" == "gogsssh" || \
"$destination_dir" == "gnusocial" || \
"$destination_dir" == "gnusocialdata" || \
"$destination_dir" == "mariadb" || \
"$destination_dir" == "config" || \
"$destination_dir" == "letsencrypt" || \
"$destination_dir" == "wiki" || \
"$destination_dir" == "wiki2" || \
"$destination_dir" == "xmpp" || \
"$destination_dir" == "ipfs" || \
"$destination_dir" == "dlna" || \
"$destination_dir" == "tox" || \
"$destination_dir" == "ssl" || \
"$destination_dir" == "blog" || \
"$destination_dir" == "owncloud" || \
"$destination_dir" == "owncloud2" || \
"$destination_dir" == "ownclouddata" || \
"$destination_dir" == "mailinglist" ]]; then
is_valid="no"
fi
echo $is_valid
}
function backup_extra_directories {
if [ ! -f $BACKUP_EXTRA_DIRECTORIES ]; then
return
@ -450,7 +485,12 @@ function backup_extra_directories {
backup_dir=$(echo "$backup_line" | awk -F ',' '{print $1}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
if [ -d "$backup_dir" ]; then
destination_dir=$(echo "$backup_line" | awk -F ',' '{print $2}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
backup_directory_to_friend "$backup_dir" "$destination_dir"
if [[ $(valid_backup_destination "$destination_dir") == "yes" ]]; then
backup_directory_to_friend "$backup_dir" "$destination_dir"
else
echo $"WARNING: The backup directory $destination_dir is already used."
echo $"Choose a different destination name for backing up $backup_dir"
fi
else
echo $"WARNING: Directory $backup_dir does not exist"
fi

View File

@ -232,6 +232,7 @@ function restore_configuration {
if [ -d $USB_MOUNT/backup/config ]; then
echo $"Restoring configuration files"
restore_directory_from_usb /root/tempconfig config
cp -f /root/tempconfig/root/${PROJECT_NAME}.cfg $CONFIG_FILE
if [ ! "$?" = "0" ]; then
unmount_drive
@ -242,12 +243,23 @@ function restore_configuration {
# install according to the config file
freedombone -c $CONFIG_FILE
fi
cp -f /root/tempconfig/root/${PROJECT_NAME}-completed.txt $COMPLETION_FILE
if [ ! "$?" = "0" ]; then
unmount_drive
rm -rf /root/tempconfig
exit 6382
fi
if [ -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ]; then
cp -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ${BACKUP_EXTRA_DIRECTORIES}
if [ ! "$?" = "0" ]; then
unmount_drive
rm -rf /root/tempconfig
exit 62121
fi
fi
rm -rf /root/tempconfig
fi
}

View File

@ -142,6 +142,7 @@ function restore_configuration {
if [ -d $SERVER_DIRECTORY/backup/config ]; then
echo $"Restoring configuration files"
restore_directory_from_friend /root/tempconfig config
cp -f /root/tempconfig/root/${PROJECT_NAME}.cfg $CONFIG_FILE
if [ ! "$?" = "0" ]; then
unmount_drive
@ -152,12 +153,23 @@ function restore_configuration {
# install according to the config file
freedombone -c $CONFIG_FILE
fi
cp -f /root/tempconfig/root/${PROJECT_NAME}-completed.txt $COMPLETION_FILE
if [ ! "$?" = "0" ]; then
unmount_drive
rm -rf /root/tempconfig
exit 7252
fi
if [ -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ]; then
cp -f /root/tempconfig${BACKUP_EXTRA_DIRECTORIES} ${BACKUP_EXTRA_DIRECTORIES}
if [ ! "$?" = "0" ]; then
unmount_drive
rm -rf /root/tempconfig
exit 62121
fi
fi
rm -rf /root/tempconfig
fi
}