Bash script Backup local profile

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Scirocco

Benutzer
Registriert
16. Feb. 2015
Beiträge
2
Reaktionspunkte
0
Punkte
1
Hi zusammen,

beiliegendes Script funktioniert fehlerfrei auf der Console (unter root) - binde ich es jedoch in den Taskplaner ein (und lasse es auch unter root ausführen) wird die Variable $HOME nicht aufgelöst
und der tar/gz Befehl läuft in's leere bzw. greift auf "/" zu.
Rich (BBCode):
#!/opt/bin/bash
#
# 

clear

DATE=`/bin/date +%Y-%m-%d_%H%M%S`
DATE0=$(date +%Y-%m-%d)
DATE1=$(date +%d-%m-%Y_%H_%M)
DATE2=$(date +%d-%m-%Y)
DATE3=$(date +%m-%Y)

SCRIPTNAME=`basename "$0"`
HOSTNAME=`hostname`
MyUsername=`whoami`

CURRENTPATH=`pwd`

MyBackupPath=/volume1/backup_local/$SCRIPTNAME/$DATE0
MyBackupfile=${DATE}_$HOSTNAME
MyLogfile=${MyBackupfile}.log

# usage () {
#   echo -e "Usage: $SCRIPTNAME [-l | -f | -e | -h]\n"
# }

# Basic sanity checks.  Running as root.  One Parameter only.
# [[ "`id -u`" =  "0" ]] || ( echo "Root only"; exit 1 )
# [[ $# -ne 1 ]] && ( usage; exit 1 )

if [ ! -d $MyBackupPath ]; then
  mkdir -p $MyBackupPath
fi

echo -e "\aScriptname   : " $SCRIPTNAME
echo -e "\aHostname     : " $HOSTNAME
echo -e "\aUsername     : " $MyUsername
echo -e "\aProfile      : " $HOME
echo -e "\aBackup Path  : " $MyBackupPath
echo -e "\aBackup File  : " $MyBackupfile.tgz

echo -e "\aScriptname   : " $SCRIPTNAME>> $MyBackupPath/$MyLogfile
echo -e "\aHostname     : " $HOSTNAME>> $MyBackupPath/$MyLogfile
echo -e "\aUsername     : " $MyUsername>> $MyBackupPath/$MyLogfile
echo -e "\aProfile      : " $HOME>> $MyBackupPath/$MyLogfile
echo -e "\aBackup Path  : " $MyBackupPath>> $MyBackupPath/$MyLogfile
echo -e "\aBackup File  : " $MyBackupfile.tgz>> $MyBackupPath/$MyLogfile
echo -e "\aCurrent Path : " $CURRENTPATH>> $MyBackupPath/$MyLogfile

# With no parameters we list the currently mounted devices
# if [ -z "$1" ]
# then
#   # Listing mounted USB Drives
#   /usr/syno/bin/synousbdisk -enum>> $MyBackupPath/$MyLogfile
#   exit 0
# fi

rm -f $MyBackupPath/$MyBackupfile.{tar,tar.gz,tgz,lst}

cd $HOME

echo -e "\a"

echo -e "backup to archive \"$MyBackupPath/${MyBackupfile}.tgz\""
echo -e "tar & gzip of \"$HOME\""
echo -e "Lisfile : $MyBackupPath/$MyBackupfile.lst"

ls -lFaR $HOME/ >> $MyBackupPath/$MyBackupfile.lst
# tar cfvp - $HOME/ | gzip -vf9 > $MyBackupPath/${MyBackupfile}.tgz

echo -e "\a"
 
Wenn ein Skript über den cron läuft, dann fehlt das Environment, das man sonst in einer persönlichen Shell vorfindet. Entweder setzt Du $HOME selbst in Deinem Skript oder Du lädst eine .profile zu Beginn beispielsweise mittels ". /root/.profile".
 
Hi, danke für die prompte Antwort. Das Leben kann so einfach sein ;-) Jetzt kommen die Erinnerungen wieder hoch... ich kämpfe mich durch meine alten Sourcen aus der Solaris-Zeit an der Uni ;-). Danke Dir und Gruss Gunnar
 
Hehehe, sehr schön. Wenn nochmal 'was hakt, melde Dich. Und btw: Willkommen im Forum, Gunnar! :)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat