Good to Know Database

Shell Skript: ATrpms EL5 Mirror Script


Das folgende Shell Skript erstellt einen lokalen Mirror des ATrpms EL5 Repositories. Das lokale Mirror-Verzeichnis wird durch die Variablen EL5_I386_MIRROR und EL5_X86_64_MIRROR eingestellt.

Hinweis: Dieses Skript ist für CentOS 5.x ausgelegt.

###########################################################################
##                                                                       ##
##                       ATrpms EL5 Mirror Script                        ##
##                                                                       ##
## Creation:    26.11.2004                                               ##
## Last Update: 20.10.2013                                               ##
##                                                                       ##
## Copyright (c) 2004-2013 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

# ATrpms el5-i386 mirror server and the local mirror directory
EL5_I386_SERVER=rsync.hrz.tu-chemnitz.de::ftp/pub/linux/ATrpms/el5-i386/
EL5_I386_MIRROR=/data/nfs/linux/ATrpms/el5-i386/

# ATrpms el5-x86_64 mirror server and the local mirror directory
EL5_X86_64_SERVER=rsync.hrz.tu-chemnitz.de::ftp/pub/linux/ATrpms/el5-x86_64/
EL5_X86_64_MIRROR=/data/nfs/linux/ATrpms/el5-x86_64/

# Log file
LOGFILE=/var/log/atrpms_el5_mirror.log

# Debug file (if you do not want to debug the download process set this option to "/dev/null")
DEBUGFILE=/var/log/atrpms_el5_mirror.debug

# Who will be informed in case if anything goes wrong (if you do not want to be informed via mail, set this option to "")
MAILNOTIFY="root@localhost"

# Lock file
LOCK=/var/tmp/atrpms_el5_mirror.lock

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

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

function error()
  {
    echo `date +%d.%m.%Y%t%H:%M:%S` "    ERROR:" $1 >>${LOGFILE}
    if [ -n "$MAILNOTIFY" ] ; then
      echo `date +%d.%m.%Y%t%H:%M:%S` "    ERROR:" $1 | mail -s "ERROR while synchronizing ATrpms EL5" $MAILNOTIFY
    fi
    echo $1 | grep "Lockfile" >/dev/null
    if [ $? = 1 ] ; then
      rm -f ${LOCK}
    fi
    exit 1
  }

function status()
  {
    case "$1" in
      0)
        log "Synchronization completed."
        ;;
      1)
        error "RSYNC: Syntax or usage error"
        ;;
      2)
        error "RSYNC: Protocol incompatibility"
        ;;
      3)
        error "RSYNC: Errors selecting input/output files, dirs"
        ;;
      4)
        error "RSYNC: Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server."
        ;;
      5)
        error "RSYNC: Error starting client-server protocol"
        ;;
      6)
        error "RSYNC: Daemon unable to append to log-file"
        ;;
      10)
        error "RSYNC: Error in socket I/O"
        ;;
      11)
        error "RSYNC: Error in file I/O"
        ;;
      12)
        error "RSYNC: Error in rsync protocol data stream"
        ;;
      13)
        error "RSYNC: Errors with program diagnostics"
        ;;
      14)
        error "RSYNC: Error in IPC code"
        ;;
      20)
        error "RSYNC: Received SIGUSR1 or SIGINT"
        ;;
      21)
        error "RSYNC: Some error returned by waitpid()"
        ;;
      22)
        error "RSYNC: Error allocating core memory buffers"
        ;;
      23)
        error "RSYNC: Partial transfer due to error"
        ;;
      24)
        error "RSYNC: Partial transfer due to vanished source files"
        ;;
      25)
        error "RSYNC: The --max-delete limit stopped deletions"
        ;;
      30)
        error "RSYNC: Timeout in data send/receive"
        ;;
      *)
        error "RSYNC: Unknown error $1"
        ;;
    esac
  }

if [ -f ${LOCK} ] ; then
  error "Lockfile ${LOCK} exists."
fi

touch ${LOCK}

# Create local mirror directories if not exists
if [ ! -d ${EL5_I386_MIRROR} ] ; then
  log "Creating local ATrpms el5-i386 mirror directory."
  mkdir -p ${EL5_I386_MIRROR}
fi
if [ ! -d ${EL5_X86_64_MIRROR} ] ; then
  log "Creating local ATrpms el5-x86_64 mirror directory."
  mkdir -p ${EL5_X86_64_MIRROR}
fi

log "Starting ATrpms el5-i386 download process."
rsync -av --delete --progress --delay-updates --timeout=300 ${EL5_I386_SERVER} ${EL5_I386_MIRROR} >>${DEBUGFILE} 2>&1
status $?

log "Starting ATrpms el5-x86_64 download process."
rsync -av --delete --progress --delay-updates --timeout=300 ${EL5_X86_64_SERVER} ${EL5_X86_64_MIRROR} >>${DEBUGFILE} 2>&1
status $?

rm -f ${LOCK}

exit 0

Damit die Logdateien nicht zu groß werden, sollten Sie Logrotate anweisen die Logdateien regelmäßig zu archivieren und nach einer gewissen Zeit zu löschen. Dazu erstellen Sie einfach die Datei /etc/logrotate.d/atrpms_el5_mirror.

[root@centos5 ~]# vi /etc/logrotate.d/atrpms_el5_mirror

Fügen Sie in diese Datei die folgenden Zeilen ein. Dadurch wird die Logdatei /var/log/atrpms_el5_mirror.log monatlich und die Logdatei /var/log/atrpms_el5_mirror.debug wöchentlich archiviert. Von beiden Logdateien werden nur die letzten drei Archivdateien vorgehalten. Ältere Archive werden automatisch gelöscht.

/var/log/atrpms_el5_mirror.log {
    monthly
    rotate 3
    compress
    delaycompress
    missingok
    notifempty
}

/var/log/atrpms_el5_mirror.debug {
    weekly
    rotate 3
    compress
    delaycompress
    missingok
    notifempty
}


Dieser Eintrag wurde am 13.02.2011 erstellt und zuletzt am 05.04.2015 bearbeitet.

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

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer