netscape
Goto Top

Shell Backupscript

Hi,

ich habe auf einem Linux Server verschiedene Backupscripte laufen, die Dateien in verschiedene Ordner sichern (als zip´s). Problem ist, dass es mit der Zeit zu viele werden.

Bsp:
Backupordner X
-> Backup_YYYY_MM_DD
-> Backup_YYYY_MM_DD
-> Backup_YYYY_MM_DD
-> Backup_YYYY_MM_DD
-> Backup_YYYY_MM_DD


So sieht das dann aus. Nun möchte ich, dass es maximal 2 Backups gibt und die Anderen gelöscht werden. Es sollen immer die ältesten gelöscht werden.

Content-Key: 100145

Url: https://administrator.de/contentid/100145

Printed on: April 25, 2024 at 19:04 o'clock

Member: Tak00r
Tak00r Oct 24, 2008 at 10:05:37 (UTC)
Goto Top
Wie wäre es wenn du einfach nach dem Backup der aktuellen Dateien jeweils das Backup von vor 2 Tagen löscht. Dabei musst du natürlich aufpassen, dass du den Monats und Jahreswechsel berücksichtigst. Sollte aber eigentlich kein Problem sein das zu programmieren

Würde dann ungefähr so aussehen

backup der aktuellen dateien
löschen der datei mit dateinamen Backup_YYYY_MM_(DD-2)
Member: Netscape
Netscape Oct 24, 2008 at 13:31:39 (UTC)
Goto Top
Also das hier habe ich noch gefunden. Allerdings funktioniert es bei mir nicht ganz.

Beim letzten Befehel: delfile=basename_`date -r $deletedate '+%Y%m%d'`.gz
kommt bei mir immer Datei oder Verzeichnis nicht gefunden.


#!/bin/sh
cd /backup/directory

budate=`date '+%Y%m%d'`
-- today, normal date format,
--backticks to get the at the string

bufilename=basename_`date '+%Y%m%d'`.gz
--same thing rolled into filename

--now delete the file from 3 days back,
--so we have always 3 days of backups
let deletedate=`date '+%s'`-259200
--todays date in seconds - 3 days in seconds
--key points are using `let' for sh calculations
--and using `date' with the %s format string

delfile=basename_`date -r $deletedate '+%Y%m%d'`.gz
rm $delfile

dosomebackupscript -o $bufilename
                                                  1. create the new file