Hallo zurück
Ich habe mal wieder etwas hilfreiches zum Thema FTP Backup. Dem einen ist es bereits aufgefallen, dem anderen wohl erst, wenn der externe Backup-Server "HDD voll" oder "Quota erreicht"...
Hierfür habe ich eine kleine Abhilfe. Ein Shell Script, dass automatisch alle Backup-Files nach Ablauf einer gewissen Zeit automatisch löscht. Ich habe das Script schon so geschrieben, dass es wunderbar zum Thema "http://www.axigenmailgate.de/f…94-axigen-ftp-backup.html" passt.
Voraussetzung und Grundlage
Funktionsweise
Eigentlich nichts besonderes, hier ein kleiner Überblick:
- Verbinden und Auslesen des betreffenden Verzeichnisses anhand von "ncftpls"
- Das gescannte Verzeichnis wird anschließend aufgerufen ($baklist) und
- anhand des Namens, was gleichzeitig das betreffende Datum ($del) kontrolliert.
- Ist das Datum des Files ($baklist) kleiner als der angegebene Zeitraum (in dem fall älter als 14 Tage)
- Wird der Filename in eine Löschdatei ($delfile) geschrieben.
- Nach Ablauf bzw. Kontrolle aller Files aus dem FTP bestimmt ein FLAG ($ready2del), ob gelöscht wird oder nicht.
- Ist das FLAG ($ready2del=1) gesetzt, werden alle Dateien in der Löschliste ($delfile) vom FTP gelöscht.
Shell-Script
Bash
#!/bin/bash
###############################################
# Cleanup old FTP Backups #
# Associate to AXIGEN.SBS.V1.x #
# SNOW.CoB.V1.1 (c) SkawoN 2010 #
###############################################
host="123.123.123.123" #<-- IP Adr. or Hostname
user="[USERNAME]" #<-- Username for FTP Server
pass="[PASSWORD]" #<-- You passwort for FTP Server
ftpdir="daily" #<-- Option: Directory
baklist="/tmp/list.txt"
delfile="/tmp/delfile.ftp"
del=`date --date='14 day ago' +%y%m%d` #<-- Change the number, if you want...
ncftpls -u $user -p $pass ftp://$host/$ftpdir/ >> $baklist
exec 3<&0
exec 0<$baklist
ready2del=0
while read line
do
filename=${line%.*}
if [ $filename -lt $del ]
then
ready2del=1
echo "rm "$line >> $delfile
fi
done
rm $baklist
if [ $ready2del == 1 ]
then
echo "bye" >> $delfile
set confirm-close no
ncftp -u $user -p $pass ftp://$host/$ftpdir/ <$delfile
rm $delfile
fi
Alles anzeigen