diff --git a/plugins/localdump/couchdb2.sh b/plugins/localdump/couchdb2.sh index f6aa7826624b16dbe452121c7e58f648332ca791..c03b7f3ea9510b6d39d3c67e30af8abe138102b8 100755 --- a/plugins/localdump/couchdb2.sh +++ b/plugins/localdump/couchdb2.sh @@ -145,7 +145,35 @@ function _doBackupOfSingleInstance(){ create_targetdir mkdir -p ${BACKUP_TARGETDIR}/${COUCHDB_INSTANCE} 2>/dev/null mkdir -p ${ARCHIVE_DIR}/${COUCHDB_INSTANCE}/seq 2>/dev/null - typeset -i iDbTotal=`_getDblist | wc -l` + + local ARCHIVE_DIR2=${ARCHIVE_DIR}/${COUCHDB_INSTANCE}/deleted_databases + test -d "${ARCHIVE_DIR2}" || mkdir -p ${ARCHIVE_DIR2} 2>/dev/null + + echo + echo " MOVE deleted databases into ${ARCHIVE_DIR2}" + echo + + # get a list of current databases + dblist=/tmp/couch_list_${COUCHDB_INSTANCE}.txt + _getDblist > $dblist + ls -l $dblist + + # detect deleted databases: + for dumpfile in $( find ${ARCHIVE_DIR}/${COUCHDB_INSTANCE}/ -maxdepth 1 -type f -name "*.couchdbdump.gz" ) + do + dbname=$( basename $dumpfile | sed "s#\.couchdbdump\.gz##g" ) + grep "^${dbname}" $dblist >/dev/null + if [ $? -ne 0 ]; then + SEQFILE=${ARCHIVE_DIR}/${COUCHDB_INSTANCE}/seq/__seq__${dbname} + echo "DELETED $dbname ... $( ls -l ${dumpfile} | cut -f 5- -d ' ' )" + mv ${dumpfile} ${ARCHIVE_DIR2} + rm -f ${SEQFILE} + fi + done + # done | tee /tmp/couch_archive_${COUCHDB_INSTANCE}.txt + echo + + typeset -i iDbTotal=$( wc -l $dblist ) typeset -i iDb=0 echo @@ -154,7 +182,7 @@ function _doBackupOfSingleInstance(){ echo " ARCHIVE ${ARCHIVE_DIR}/${COUCHDB_INSTANCE}" echo - for dbname in `_getDblist` + for dbname in $( cat $dblist ) do iDb=$iDb+1 echo -n "----- `date` ${COUCHDB_INSTANCE} -- $iDb of $iDbTotal - ${dbname} - " @@ -195,7 +223,7 @@ function _doBackupOfSingleInstance(){ echo fi done - + rm -f $dblist } # ---------- RESTORE @@ -206,7 +234,7 @@ function restoreByFile(){ sMyfile=$1 sMyDb=$2 bFastMode=1 - + echo h2 "analyze dump $sMyfile"