about summary refs log tree commit diff stats
path: root/core/scripts/backup-system.sh
diff options
context:
space:
mode:
Diffstat (limited to 'core/scripts/backup-system.sh')
-rw-r--r--core/scripts/backup-system.sh189
1 files changed, 136 insertions, 53 deletions
diff --git a/core/scripts/backup-system.sh b/core/scripts/backup-system.sh
index 2bced8a..49b9873 100644
--- a/core/scripts/backup-system.sh
+++ b/core/scripts/backup-system.sh
@@ -18,8 +18,47 @@ ConfirmOrExit ()
     echo "You entered $CONFIRM. Continuing ..."
 }
 
+mkbk_coll_pkg() {
+    col=$1
+    # make copy of packages
+    mkdir ${PORT_PKG}/${col}
+    while read line; do
+        if [ ! -f /usr/ports/packages/${line} ]; then
+            echo "Building package: ${line};\n"
+            name=$(echo ${line} | cut -d "#" -f 1)
+            #$sudo prt-get update -fr ${name}
+        fi
+
+        if [ -f /usr/ports/packages/${line} ]; then
+            echo "Backing up package: ${line}"
+            echo ${line} >> ${DEST_DIR}/backup.pkg
+            cp /usr/ports/packages/${line} ${PORT_PKG}/${col}/
+        else
+            echo "Package not found: ${line}"
+            echo ${line} >> ${DEST_DIR}/${col}-notfound.pkg
+        fi
+    done < $DEST_DIR/${col}.pkg
+}
+
+mkbk_coll_ports() {
+    col=$1
+
+    #    tar --xattrs -zcpf $PORT_PRT/${col}-`date '+%Y-%j-%H-%M-%S'`.tar.gz \
+        #    --directory=$ROOT_DIR/usr/ports/${col} \
+        #    .
+    tar --xattrs -zcpf $PORT_PRT/${col}.tar.gz \
+        --directory=$ROOT_DIR/usr/ports/${col} \
+        --exclude=.git/ \
+        .
+
+}
+
 mkbk_metadata() {
 
+    # archive pkgutils data
+    tar --xattrs -zcpf $DATA_CNF/pkg-db.tar.gz \
+        /var/lib/pkg/db
+
     # must be using gwak instead of sed, xargs and echo
     prt-get listinst -v | sed -s s/" "/#/g | xargs -i echo {}.pkg.tar.gz > ${DEST_DIR}/installed.pkg
 
@@ -36,80 +75,141 @@ mkbk_metadata() {
 
 }
 
-mkbk_coll_pkg() {
-    col=$1
-    # make copy of packages
-    mkdir ${PORT_PKG}/${col}
-    while read line; do
-            if [ ! -f /usr/ports/packages/${line} ]; then
-                echo "Building package: ${line};\n"
-                name=$(echo ${line} | cut -d "#" -f 1)
-                #$sudo prt-get update -fr ${name}
-            fi
+mkbk_etc_conf() {
 
-            if [ -f /usr/ports/packages/${line} ]; then
-                echo "Backing up package: ${line}"
-                echo ${line} >> ${DEST_DIR}/backup.pkg
-                cp /usr/ports/packages/${line} ${PORT_PKG}/${col}/
-            else
-                echo "Package not found: ${line}"
-                echo ${line} >> ${DEST_DIR}/${col}-notfound.pkg
+    tar --xattrs -zcpf $DATA_CNF/etc.tar.gz \
+        --directory=$ROOT_DIR/etc \
+        .
+
+    tar --xattrs -zcpf $DATA_CNF/usr_etc.tar.gz \
+        --directory=$ROOT_DIR/usr/etc \
+        .
+}
+
+mkbk_srv_www() {
+
+    # backup web data first stop php and nginx
+
+    for pkg_www in ${ROOT_DIR}/srv/www/*; do
+        if [[ ! $(ls ${pkg_www} | grep -v "backup_deploy") = "" ]]; then
+            pkg_back="${DATA_SRV}/www"
+            if [ ! -d ${pkg_back} ]; then
+                mkdir -p ${pkg_back}
             fi
-    done < $DEST_DIR/${col}.pkg
+            bck_file="${pkg_back}/$(basename ${pkg_www}).tar.gz"
+            exc="${pkg_www}/backup_deploy"
+            tar --exclude ${exc} --xattrs -zcpf ${bck_file} ${pkg_www}
+        fi
+    done
 }
 
-mkbk_coll_ports() {
-    col=$1
+mkbk_srv_pgsql() {
 
-#    tar --xattrs -zcpf $PORT_PRT/${col}-`date '+%Y-%j-%H-%M-%S'`.tar.gz \
-#    --directory=$ROOT_DIR/usr/ports/${col} \
-#    .
-    tar --xattrs -zcpf $PORT_PRT/${col}.tar.gz \
-    --directory=$ROOT_DIR/usr/ports/${col} \
-    --exclude=.git/ \
-    .
+    # backup database data first dump all databases
+
+    pkg_back="${DATA_SRV}/pgsql"
+    if [ ! -d ${pkg_back} ]; then
+        mkdir -p ${pkg_back}
+    fi
+    pg_dumpall -U postgres | gzip > ${pkg_back}/cluster_dump.gz
 
+    tar --xattrs -zcpf "${pkg_back}/pgsql-conf.tar.gz" \
+        ${ROOT_DIR}/srv/pgsql/data/pg_hba.conf \
+        ${ROOT_DIR}/srv/pgsql/data/pg_ident.conf \
+        ${ROOT_DIR}/srv/pgsql/data/postgresql.conf
 }
 
-mkbk_data_conf() {
+mkbk_srv_gitolite() {
 
-    tar --xattrs -zcpf $DATA_CNF/etc.tar.gz \
-        --directory=$ROOT_DIR/etc \
-        .
+    # backup gitolite repositories
 
-    tar --xattrs -zcpf $DATA_CNF/usr_etc.tar.gz \
-        --directory=$ROOT_DIR/usr/etc \
+    pkg_back="${DATA_SRV}/gitolite"
+    if [ ! -d ${pkg_back} ]; then
+        mkdir -p ${pkg_back}
+    fi
+
+    tar --xattrs -zcpf "${pkg_back}/gitolite.tar.gz" \
+        --directory=${ROOT_DIR}/srv/gitolite \
         .
 }
 
+mkbk_user_metadata() {
+
+    for dir in /home/*; do
+        if [ "${dir}" != "/home/lost+found" ]; then
+            user=$(basename $dir)
+            tar --xattrs -zcpf "${DATA_USR}/meta-${user}.tar.gz" \
+                $dir/.bash_profile \
+                $dir/.bashrc \
+                $dir/.config \
+                $dir/.gitconfig \
+                $dir/.gnupg \
+                $dir/.irssi \
+                $dir/.lynxrc \
+                $dir/.mutt \
+                $dir/.netrc \
+                $dir/.profile \
+                $dir/.spectrwm.conf \
+                $dir/.ssh \
+                $dir/.tmux.conf \
+                $dir/.vim \
+                $dir/.vimrc \
+                $dir/.xinitrc
+
+            # encript data
+            #gpg --output "${DATA_USR}/meta-${user}.tar.gz.gpg" \
+            #    --encrypt --recipient user@host \
+            #    "${DATA_USR}/meta-${user}.tar.gz"
+
+            tar --xattrs -zcpf "${DATA_USR}/gitolite-${user}.tar.gz" \
+                $dir/gitolite-admin
+        fi
+    done
+}
 
-echo -n "root directory you want backup (/mnt/): "
+echo -n "root directory you want backup (/mnt/):\n "
 #read ROOT_DIR
 ROOT_DIR=$1
 
-echo -n "where you want to save (/home/user): "
+echo -n "where you want to save (/home/user):\n "
 DEST_DIR=$2
 
 # Temporary directory
 PORT_PKG="${DEST_DIR}/crux"
 PORT_PRT="${DEST_DIR}/ports"
 DATA_CNF="${DEST_DIR}/conf"
+DATA_USR="${DEST_DIR}/user"
+DATA_SRV="${DEST_DIR}/srv"
 
 echo "ROOT_DIR=${ROOT_DIR}"
 echo "DEST_DIR=${DEST_DIR}"
 echo "PORT_PKG=${PORT_PKG}"
 echo "PORT_PRT=${PORT_PRT}"
 echo "DATA_CNF=${DATA_CNF}"
+echo "DATA_USR=${DATA_USR}"
+echo "DATA_SRV=${DATA_SRV}"
 
 ConfirmOrExit
 
+if [ ${ROOT_DIR} == "/" ]; then
+    ROOT_DIR=""
+fi
+
 mkdir -p ${PORT_PKG}
 mkdir -p ${PORT_PRT}
 mkdir -p ${DATA_CNF}
+mkdir -p ${DATA_USR}
+mkdir -p ${DATA_SRV}
 
+# Light backup data
 mkbk_metadata
-mkbk_data_conf
+mkbk_etc_conf
+mkbk_user_metadata
+mkbk_srv_www
+mkbk_srv_pgsql
+mkbk_srv_gitolite
 
+# Port system
 mkbk_coll_ports "core"
 mkbk_coll_pkg "core"
 mkbk_coll_ports "opt"
@@ -121,20 +221,3 @@ mkbk_coll_pkg "xorg"
 
 mkbk_coll_pkg "other"
 
-#echo $DES_DIR
-#echo $ROOT_DIR
-#
-#tar --xattrs -zcpf $DEST_DIR/system-backup-`date '+%Y-%j-%H-%M-%S'`.tar.gz \
-#    --directory=$ROOT_DIR \
-#    --exclude=usr/ports \
-#    --exclude=usr/src \
-#    --exclude=var/run \
-#    --exclude=var/lock \
-#    --exclude=srv \
-#    --exclude=mnt \
-#    --exclude=home \
-#    --exclude=dev \
-#    --exclude=run \
-#    --exclude=tmp \
-#    --exclude=proc \
-#    --exclude=sys .