Good to Know Database

Shell Skript: Daily-/Weekly-/Monthlydel Script for Raspbian Jessie


Das hier vorgestellte Shell Skript bietet Ihnen die Möglichkeit ein Dailydel-, Weeklydel- und/oder Monthlydel-Verzeichnis auf Ihrem Raspbian Jessie System einzurichten und automatisch zu pflegen. Nachdem Sie die Pfade für die temporären Verzeichnisse an Ihre Bedürfnisse angepasst haben, müssen Sie das Script nur ausführen um die temporären Verzeichnisse anzulegen. Damit der Inhalt der Verzeichnisse nach dem Ablauf der jeweiligen Vorhaltezeit automatisch gelöscht wird, sollten Sie dieses Skript regelmäßig von einem Cronjob ausführen lassen. Ein entsprechender Crontab-Eintrag könnte wie folgt aussehen.

*/30 * * * * /root/sh/dailydel.sh >/dev/null 2>&1

###########################################################################
##                                                                       ##
##         Daily-/Weekly-/Monthlydel Script for Raspbian Jessie          ##
##                                                                       ##
## Creation:    29.03.2010                                               ##
## Last Update: 07.06.2016                                               ##
##                                                                       ##
## Copyright (c) 2010-2016 by Georg Kainzbauer <http://www.gtkdb.de>     ##
##                                                                       ##
## This program is free software; you can redistribute it and/or modify  ##
## it under the terms of the GNU General Public License as published by  ##
## the Free Software Foundation; either version 2 of the License, or     ##
## (at your option) any later version.                                   ##
##                                                                       ##
###########################################################################
#!/bin/bash

# Path of dailydel directory (if you do not want a dailydel directory, set this option to "")
DAILYDEL=/data/public/dailydel

# Path of weeklydel directory (if you do not want a weeklydel directory, set this option to "")
WEEKLYDEL=/data/public/weeklydel

# Path of monthlydel directory (if you do not want a monthlydel directory, set this option to "")
MONTHLYDEL=/data/public/monthlydel

# Name of notice file
NOTICEFILE=readme.txt

# Notice for dailydel directory
DAILYDELNOTICE="Jede Datei in diesem Verzeichnis, welche aelter als 24 Stunden ist, wird automatisch geloescht."

# Notice for weeklydel directory
WEEKLYDELNOTICE="Jede Datei in diesem Verzeichnis, welche aelter als 7 Tage ist, wird automatisch geloescht."

# Notice for monthlydel directory
MONTHLYDELNOTICE="Jede Datei in diesem Verzeichnis, welche aelter als 30 Tage ist, wird automatisch geloescht."

# Name of report file (if you do not want a report file, set this option to "")
REPORTFILE=`date +%Y.%m.%d`_DeleteReport.txt

# How many days before delete report file
REPORTDAYS=14

# Lock file
LOCKFILE=/var/tmp/dailydel.lock

###################################################################
# NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
###################################################################

log()
{
  echo `date +%d.%m.%Y%t%H:%M:%S` "    LOG:" $1
}

error()
{
  echo `date +%d.%m.%Y%t%H:%M:%S` "    ERROR:" $1
}

run()
{
  # Call this function with the following parameters
  # $1: Path to the daily-/weekly-/monthlydel directory
  # $2: Days before delete files and folders
  # $3: Message for the notice file
  # $4: Name of notice file
  # $5: Name of report file
  # $6: Days before delete report file

  # Create daily-/weekly-/monthlydel directory if not exists
  if [ ! -d ${1} ] ; then
    mkdir -p ${1}
    chown root:users ${1}
    chmod 0775 ${1}
  fi

  if [ -n "${5}" ] ; then
    REPORTDIR=${1}/DeleteReport
    DELETEREPORT=${REPORTDIR}/${5}

    # Create report directory if not exists
    if [ ! -d ${REPORTDIR} ] ; then
      mkdir -p ${REPORTDIR}
    fi
  else
    DELETEREPORT=/dev/null
  fi

  # Clean daily-/weekly-/monthlydel directory and log deleted files and folders to the report file
  find ${1} -mindepth 1 -ctime +${2} -not -name ${4} -not -name *DeleteReport* -exec rm -rf {} \; -exec echo -e "{} (`date +%H:%M`)\n\r" >> ${DELETEREPORT} \;

  # Clean report directory
  if [ -d ${REPORTDIR} ] ; then
    find ${REPORTDIR} -type f \( -ctime +${6} -or -empty \) -exec rm -f {} \;
  fi

  # Create notice file if not exists
  if [ ! -f ${1}/${4} ] ; then
    echo "${3}" > ${1}/${4}
  fi
}

if [ -f ${LOCKFILE} ] ; then
  kill -0 $(cat ${LOCKFILE}) >/dev/null 2>&1
  if [ $? -eq 0 ] ; then
    error "Previous process still running."
    exit 1
  else
    log "Deprecated lock file found. Remove lock file."
    rm -f ${LOCKFILE}
  fi
fi

echo $$ >${LOCKFILE}

# Call run() for dailydel directory
if [ -n "${DAILYDEL}" ] ; then
  run "${DAILYDEL}" "0" "${DAILYDELNOTICE}" "${NOTICEFILE}" "${REPORTFILE}" "${REPORTDAYS}"
fi

# Call run() for weeklydel directory
if [ -n "${WEEKLYDEL}" ] ; then
  run "${WEEKLYDEL}" "6" "${WEEKLYDELNOTICE}" "${NOTICEFILE}" "${REPORTFILE}" "${REPORTDAYS}"
fi

# Call run() for monthlydel directory
if [ -n "${MONTHLYDEL}" ] ; then
  run "${MONTHLYDEL}" "29" "${MONTHLYDELNOTICE}" "${NOTICEFILE}" "${REPORTFILE}" "${REPORTDAYS}"
fi

rm -f ${LOCKFILE}

exit 0


Dieser Eintrag wurde am 31.07.2016 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2804.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer