applied patch to rdiff.helper, removed /etc/passwd from mysql handler.
[matthijs/upstream/backupninja.git] / handlers / mysql
index e5306db4c5a42adafcafeb87e31f29f24c163328..569b0a206d21dc4b509539fd969c2ce6e9d181e3 100644 (file)
@@ -4,6 +4,7 @@
 
 getconf backupdir /var/backups/mysql
 getconf databases all
+getconf ignores
 getconf dbhost localhost
 getconf hotcopy no
 getconf sqldump no
@@ -21,10 +22,18 @@ if [ "$user" == "" ]; then
        user=root;
 else
        userset=true;
-       userhome=`grep "^$user:" /etc/passwd | awk -F: '{print $6}'`
+       userhome=`getent passwd "$user" | awk -F: '{print $6}'`
        [ -f $userhome/.my.cnf ] || fatal "Can't find config file in $userhome/.my.cnf"
 fi
 
+## Prepare ignore part of the command
+## This only works for mysqldump at the moment
+
+ignore=''
+for i in $ignores; do
+       ignore="$ignore --ignore-table=$i"
+done
+
 # If vservers are configured, decide if the handler should
 # use them or if it should just operate on the host
 
@@ -42,13 +51,13 @@ fi
 # If needed, make sure that the specified vserver exists and is running.
 if [ $usevserver ]
 then
-        info "examining vserver '$vsname'"
-        # does it exist ?
+       info "examining vserver '$vsname'"
+       # does it exist ?
        vroot="$VROOTDIR/$vsname"
        [ -d $vroot ] || fatal "vserver '$vsname' does not exist at '$vroot'"
-        # is it running ?
-        running=`$VSERVERINFO $vsname RUNNING`
-        [ $running = 1 ] || fatal "vserver $vsname is not running."
+       # is it running ?
+       running=`$VSERVERINFO $vsname RUNNING`
+       [ $running = 1 ] || fatal "vserver $vsname is not running."
 fi
        
 # create backup dirs, the vroot variable will be empty if no vsname was specified
@@ -86,7 +95,7 @@ fi
 
 defaultsfile=""
 if [ "$dbusername" != "" -a "$dbpassword" != "" ]; then
-       home=`grep '^root:' /etc/passwd | awk -F: '{print $6}'`
+       home=`getent passwd "root" | awk -F: '{print $6}'`
        [ -d $home ] || fatal "Can't find root's home directory ($home)."
        mycnf="$home/.my.cnf"
        if [ -f $mycnf ]; then
@@ -181,9 +190,9 @@ if [ "$sqldump" == "yes" ]; then
        for db in $databases; do
                if [ $usevserver ]
                then
-                       execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $vroot$dumpdir/${db}.sql"
+                       execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $vroot$dumpdir/${db}.sql"
                else
-                       execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $dumpdir/${db}.sql"
+                       execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $dumpdir/${db}.sql"
                fi
                debug "su $user -c '$execstr'"
                if [ ! $test ]; then