Ajout lighttpd (fonctionne avec PHP5)
[hvlinux.git] / stage2 / hv-utilities / hv-backup
index 38a74a8..81e2c96 100755 (executable)
@@ -1,17 +1,91 @@
-#!/bin/sh
+#!/bin/bash
 
-# dvd-backup
+# backup
+#
+# Creates a single compressed archive.
 
-# Load configuration informations about device
-. /etc/sysconfig/cdrecord
-
-export MEDIA_DEV="/dev/dvd"
-export MEDIA_DIR="/media/dvd"
+if [ ! -f /etc/backup.conf ]; then
+    echo "Error: missing /etc/backup.conf configuration file."
+    exit 1
+fi
 
+# Read list of backup files/directories
 source /etc/backup.conf
 
-export BKP_TMP_DIR
+# Set default value if not specified
+: ${BKP_DEST_DIR:="./"}
+
+# Default value
+ARCHIVE_LABEL="backup-data-amd64-`date '+%Y-%m-%d'`"
+
+# Exclude files list
+EXC_LIST="/tmp/hv-backup-exclude-list"
+
+print_usage()
+{
+    echo "$(basename $0) - Backup files/directories."
+    echo "Usage: $(basename $0) [-h] [--label "label"]"
+}
+
+if [ ${#} -gt 0 ]; then
+    if [ "x${1}" = "x-h" ]; then
+       print_usage
+       exit 0
+    fi
+    if [ "x${1}" = "x--label" ]; then
+        if [ $# -lt 2 ]; then
+           echo "Missing arguments for --label option"
+           print_usage
+           exit 1
+        fi
+
+        ARCHIVE_LABEL=${2}
+        shift
+        shift
+
+        if [ $# = 0 ]; then
+           echo "No directory to backup specified"
+           print_usage
+           exit 1
+        fi
+    else
+       echo "Unknown arguments: ${@}"
+       print_usage
+       exit 1
+    fi
+fi
+
+ARCHIVE_NAME=${BKP_DEST_DIR}/${ARCHIVE_LABEL}.tar.bz2
+
+echo "ARCHIVE_LABEL=$ARCHIVE_LABEL"
+
+cat > ${EXC_LIST} << "EOF"
+/media/*
+/proc/*
+/dev/*
+/sys/*
+/tmp/*
+*.sock
+*.lock
+*/.gvfs*
+EOF
+
+# Finding sockets, and listing them in the exclude file.
+# Errors and warnings must be discarded because of .gvfs directory for example.
+# Even when using -prune option, find exits with a non-zero status when resding
+# .gvfs
+find ${BKP_FILES_LIST} -type s >> ${EXC_LIST} 2> /dev/null
+
+# Archiving
+tar jcf ${ARCHIVE_NAME} ${BKP_FILES_LIST} \
+    --label="${ARCHIVE_LABEL}" \
+    --ignore-failed-read \
+    --exclude-backups \
+    --exclude-caches \
+    --exclude-from=${EXC_LIST} \
+    --absolute-names \
+    --totals
 
-media-write ${BKP_FILES_LIST}
+rm ${EXC_LIST}
 
 exit $?