From 03719ecb94bb30d5adfec0468556c8210e94face Mon Sep 17 00:00:00 2001 From: deajan Date: Tue, 15 Dec 2015 13:18:46 +0100 Subject: [PATCH] Upgrade script adds missing config file values --- CHANGELOG.md | 1 + dev/debug_osync.sh | 4 ++-- dev/ofunctions.sh | 4 ++-- osync.sh | 4 ++-- upgrade-v1.0x-v1.1x.sh | 44 ++++++++++++++++++++++++++++-------------- 5 files changed, 37 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 622977e..842e96d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ RECENT CHANGES -------------- ! XX Dec 2015: osync v1.1 released +- Better upgrade script (adding missing new config values) - More fixes for GNU / non-GNU versions of mail command - Added bogus config file checks & environment checks - Added delta copies disable option diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index de6bb26..da3b3a2 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -7,7 +7,7 @@ PROGRAM_VERSION=1.1-pre PROGRAM_BUILD=2015112805 IS_STABLE=no -FUNC_BUILD=2015121501 +FUNC_BUILD=2015121502 ## BEGIN Generic functions for osync & obackup written in 2013-2015 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -280,7 +280,7 @@ function SendAlert { if type mail > /dev/null 2>&1 ; then if $(type -p mail) -V | grep "GNU" > /dev/null; then echo ok; fi attachment_command="-A $ALERT_LOG_FILE" - elif ($type -p mail) -V; then + elif $(type -p mail) -V; then attachment_command="-a $ALERT_LOG_FILE" else attachment_command="" diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 957361f..dcfd591 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -1,4 +1,4 @@ -FUNC_BUILD=2015121501 +FUNC_BUILD=2015121502 ## BEGIN Generic functions for osync & obackup written in 2013-2015 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -271,7 +271,7 @@ function SendAlert { if type mail > /dev/null 2>&1 ; then if $(type -p mail) -V | grep "GNU" > /dev/null; then echo ok; fi attachment_command="-A $ALERT_LOG_FILE" - elif ($type -p mail) -V; then + elif $(type -p mail) -V; then attachment_command="-a $ALERT_LOG_FILE" else attachment_command="" diff --git a/osync.sh b/osync.sh index 12e901e..6a37edc 100755 --- a/osync.sh +++ b/osync.sh @@ -7,7 +7,7 @@ PROGRAM_VERSION=1.1-pre PROGRAM_BUILD=2015112805 IS_STABLE=no -FUNC_BUILD=2015121501 +FUNC_BUILD=2015121502 ## BEGIN Generic functions for osync & obackup written in 2013-2015 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -268,7 +268,7 @@ function SendAlert { if type mail > /dev/null 2>&1 ; then if $(type -p mail) -V | grep "GNU" > /dev/null; then echo ok; fi attachment_command="-A $ALERT_LOG_FILE" - elif ($type -p mail) -V; then + elif $(type -p mail) -V; then attachment_command="-a $ALERT_LOG_FILE" else attachment_command="" diff --git a/upgrade-v1.0x-v1.1x.sh b/upgrade-v1.0x-v1.1x.sh index 148889e..8dcaa15 100755 --- a/upgrade-v1.0x-v1.1x.sh +++ b/upgrade-v1.0x-v1.1x.sh @@ -1,10 +1,12 @@ -#!/bin/bash +#!/usr/bin/env bash -PROGRAM="Osync instance upagrade script" # Rsync based two way sync engine with fault tolerance +PROGRAM="osync instance upgrade script" +SUBPROGRAM="osync" AUTHOR="(L) 2015 by Orsiris \"Ozy\" de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" -PROGRAM_VERSION="1.0x to v1.1" -PROGRAM_BUILD=2015092601 +OLD_PROGRAM_VERSION="1.0x" +NEW_PROGRAM_VERSION="v1.1x" +PROGRAM_BUILD=2015121501 function Init { OSYNC_DIR=".osync_workdir" @@ -51,15 +53,15 @@ function Init { } function Usage { - echo "$PROGRAM $PROGRAM_VERSION $PROGRAM_BUILD" + echo "$PROGRAM $PROGRAM_BUILD" echo $AUTHOR echo $CONTACT echo "" - echo "This script migrates osync v1.0x setups to v1.1 by updating state filenames and config files." + echo "This script migrates osync $OLD_PROGRAM_VERSION setups to $NEW_PROGRAM_VERSION by updating state filenames and config files." echo "" - echo "Usage: upgrade.sh /path/to/config_file.conf" - echo "Usage: upgrade.sh --master=/path/to/master/replica --slave=/path/to/local/slave/replica --sync-id=existing_id" - echo "Usage: upgrade.sh --master=/path/to/master/replica --slave=ssh://[backupuser]@remotehost.com[:portnumber]//path/to/slave/replica --sync-id=existing_id --rsakey=/path/to/rsa/key" + echo "Usage: $0 /path/to/config_file.conf" + echo "Usage: $0 --master=/path/to/master/replica --slave=/path/to/local/slave/replica --sync-id=existing_id" + echo "Usage: $0 --master=/path/to/master/replica --slave=ssh://[backupuser]@remotehost.com[:portnumber]//path/to/slave/replica --sync-id=existing_id --rsakey=/path/to/rsa/key" echo "" echo "If config file is provided, the config file itself and both replicas from config file will be updated." echo "If no config file provided, assume you run the update script just like any other quicksync task." @@ -93,10 +95,10 @@ function LoadConfigFile { echo "Wrong configuration file supplied [$config_file]. Sync cannot start." exit 1 else - egrep '^#|^[^ ]*=[^;&]*' "$config_file" > "./osync.$FUNCNAME.$$" + egrep '^#|^[^ ]*=[^;&]*' "$config_file" > "./$SUBPROGRAM.$FUNCNAME.$$" # Shellcheck source=./sync.conf - source "./osync.$FUNCNAME.$$" - rm -f "./osync.$FUNCNAME.$$" + source "./$SUBPROGRAM.$FUNCNAME.$$" + rm -f "./$SUBPROGRAM.$FUNCNAME.$$" fi } @@ -305,10 +307,17 @@ function RewriteConfigFiles { local config_file="${1}" if ! grep "MASTER_SYNC_DIR=" "$config_file" > /dev/null; then - echo "Config file $config_file does not seem like an osync v1.0x file." - exit + echo "Config file [$config_file] does not seem to be an osync v1.0x file." + exit 1 fi + echo "Backing up [$config_file] as [$config_file.save]" + cp --preserve "$config_file" "$config_file.save" + if [ $? != 0 ]; then + echo "Cannot backup config file." + exit 1 + fi + echo "Rewriting config file $config_file" #TODO: exclude occurences between doublequotes @@ -317,6 +326,13 @@ function RewriteConfigFiles { sed -i 's/SLAVE_SYNC_DIR/TARGET_SYNC_DIR/g' "$config_file" sed -i 's/CONFLICT_PREVALANCE=master/CONFLICT_PREVALANCE=initiator/g' "$config_file" sed -i 's/CONFLICT_PREVALANCE=slave/CONFLICT_PREVALANCE=target/g' "$config_file" + sed -i 's/SYNC_ID=/INSTANCE_ID=/g' "$config_file" + + # Add missing config file values + sed -i '/RSYNC_REMOTE_PATH=*/a RSYNC_PATTERN_FIRST=include' "$config_file" + sed -i '/RSYNC_PATTERN_FIRST=*/a RSYNC_INCLUDE_PATTERN=""' "$config_file" + sed -i '/RSYNC_EXCLUDE_FROM=*/a RSYNC_INCLUDE_FROM=""' "$config_file" + sed -i '/PARTIAL=*/a DELTA_COPIES=yes' "$config_file" } _QUICKSYNC=0