Hallo zusammen
Das Problem besteht noch immer. In Zwischenzeit bin ich auch an einer Lösung dran. Danke Itari für dein Admin Tool. Damit lassen sich wunderbar Cron Jobs auslösen.
Im Anhang habe ich ein kleines Skript angehängt. Es ist noch nicht alles drin was drin sein muss. Aber das wird noch kommen. Mein grösstes Problem ist folgendes.
Rich (BBCode):
BACKUPDIR='backup'
BACKUPSOURCES='/volume1/test /volume1/test2'
TAROPTIONS='-cf'
COMPRESSBACKUP=1
FILENAME='test'
ROTATEFILES=1
runBackup(){
echo "INFO: Starting backup"
if [ $ROTATEFILES = 1 ] ; then
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar $BACKUPSOURCES
if [ $COMPRESSBACKUP = 1 ] ; then
echo "INFO: compressing backup file."
gzip $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar
fi
else
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.tar $BACKUPSOURCES
if [ $COMPRESSBACKUP = 1 ] ; then
echo "INFO: compressing backup file."
gzip $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.tar
fi
fi
}
Dies ist nur ein Aussschnitt aus dem ganzen Script.
Wenn BACKUPROTATE=0 ist, dann funktioniert das Skript einwandfrei. Sobald BACKUPROTATE=1 gesetzt ist, dann wird das Skript beim ersten Ausführen fehlerfrei abgearbeitet.
Beim zweiten aufruf kommt dann eine Fehlermeldung: tar cannot stat no such file or directory
Geändert wird aber nichts. Da hänge ich nun, und frage mich, wo der verdammte Fehler liegt.
Ich wäre euch sehr dankbar, wenn jemand das ganze Skript mal anschauen könnte und mir helfen könnte.
Ach ja. Wenn ich anstelle von
Rich (BBCode):
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar $BACKUPSOURCES
das hier verwende,
Rich (BBCode):
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar /volume1/test /volume1/test2
dann geht es.
Vielen Dank für eure Hilfe.
Gruss,
Peak
Hier das ganze Skript
Rich (BBCode):
#!/bin/sh
# TS-Management GmbH
# kontakt@ts-management.ch
#
# Synology DiskStation Backup Script
#
# TODO:
# -----
# - If rotate backup is enabled, only the first backup will be made
# The other backups terminate with error "tar cannot stat: no such file or directory"
# - HOLDFILES has to be implemented for rotate backup
# - Write Infos into Synology Backup log file
# - Check if eSATA Backup works
##########
# This program is free software: you can redistribute t and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
##########
*** ***
* Config *
*** ***
BACKUPDIR='backup'
BACKUPSOURCES='/volume1/test /volume1/test2'
TAROPTIONS='-cf'
COMPRESSBACKUP=1
FILENAME="test"
CHECKDISKSPACE=1
MINFREESPACE=20 # min free space in %
ROTATEFILES=1
HOLDFILES=5 # max 14 files
MOUNTTYPE='none'
BACKUPDIREXIST=0
CURRENTDATE=`date +%y%m%d-%H%M%S`
MAXUSEDSPACE=`expr 100 - $MINFREESPACE`
clear
echo -e "******************************************"
echo -e "*** Synology Diskstation Backup Script ***"
echo -e "*** ***"
echo -e "*** Autor: TS-Management GmbH ***"
echo -e "*** Stefan E. A. Müller ***"
echo -e "*** kontakt@ts-management.ch ***"
echo -e "*** ***"
echo -e "*** Version: 0.5 ***"
echo -e "*** Change: 08.04.2010 ***"
echo -e "******************************************"
sleep 1
chkMounts(){
# Check if USB is mounted. If not, check eSATA
cat /proc/mounts | grep /volumeUSB1/usbshare > /dev/null
if [ $? -eq 0 ] ; then
echo "INFO: USB Mounted"
MOUNTTYPE='USB'
else
echo "INFO: USB NOT Mounted. Checking now eSATA"
cat /proc/mounts | grep /volumeSATA1/satashare > /dev/null
if [ $? -eq 0 ] ; then
echo "INFO: eSATA Mounted"
MOUNTTYPE='eSATA'
fi
fi
}
chkBackupDir(){
echo "INFO: Checking backup directory"
if [ -d $MOUNTPATH$BACKUPDIR ] ; then
BACKUPDIREXIST=1
else
BACKUPDIREXIST=0
echo "ERROR: Backupdir does not exist!"
exit
fi
}
runBackup(){
echo "INFO: Starting backup"
if [ $ROTATEFILES = 1 ] ; then
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar $BACKUPSOURCES
if [ $COMPRESSBACKUP = 1 ] ; then
echo "INFO: compressing backup file."
gzip $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.0.tar
fi
else
tar $TAROPTIONS $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.tar $BACKUPSOURCES
if [ $COMPRESSBACKUP = 1 ] ; then
echo "INFO: compressing backup file."
gzip $MOUNTPATH$BACKUPDIR/$FILENAME-$CURRENTDATE.tar
fi
fi
}
chkDiskSpace(){
echo "INFO: Checking free disk space"
if [ $MOUNTTYPE = 'USB' ] ; then
USEDSPACE=`df -h | grep /volumeUSB1/usbshare | cut -c 41-42`
elif [ $MOUNTTYPE = 'eSATA' ] ; then
USEDSPACE=`df -h | grep /volumeSATA1/satashare | cut -c 41-42`
fi
if [ $USEDSPACE -ge $MAXUSEDSPACE ] ; then
echo "ERROR: Not enough space"
exit
fi
}
rotateFiles(){
echo "INFO: ROTATING FILES"
cd $MOUNTPATH$BACKUPDIR
for OLD in 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ; do
if [ -e $FILENAME-*.$OLD.tar.gz ] ; then
echo "File exisitert $OLD"
NEW=`expr $OLD + 1`
if [ $COMPRESSBACKUP = 1 ] ; then
touch .timestamp -r $FILENAME-*.$OLD.tar.gz
ORIFILENAME=`ls $FILENAME-*.$OLD.tar.gz`
else
touch .timestamp -r $FILENAME-*.$OLD.tar
ORIFILENAME=`ls $FILENAME-*.$OLD.tar`
fi
IFS="."
set -- $ORIFILENAME
if [ $COMPRESSBACKUP = 1 ] ; then
NEWFILENAME=$1.$NEW.$3.$4
else
NEWFILENAME=$1.$NEW.$3
fi
IFS=""
mv $ORIFILENAME $NEWFILENAME
if [ $COMPRESSBACKUP = 1 ] ; then
touch $FILENAME-*.$NEW.tar.gz -r .timestamp
else
touch $FILENAME-*.$NEW.tar -r .timestamp
fi
fi
echo "-----"
echo " "
done
sleep 5
}
chkMounts
if [ $MOUNTTYPE = 'USB' ] ; then
#echo "*** USB MOUNTED!!! ***"
MOUNTPATH='/volumeUSB1/usbshare/'
if [ $ROTATEFILES = 1 ] ; then
rotateFiles
fi
if [ $CHECKDISKSPACE = 1 ] ; then
chkDiskSpace
chkBackupDir
runBackup
else
chkBackupDir
runBackup
fi
elif [ $MOUNTTYPE = 'eSATA' ] ; then
#echo "*** eSATA MOUNTED!!! ***"
MOUNTPATH='/volumeSATA1/satashare'
if [ $ROTATEFILES = 1 ] ; then
rotateFiles
fi
if [ $CHECKDISKSPACE = 1 ] ; then
chkDiskSpace
chkBackupDir
runBackup
else
chkBackupDir
runBackup
fi
else
echo "ERROR: No backup drives found!!!"
fi