Alte Ordner löschen anhand mtime

aiko

New Member
Guten Tag!

Ich habe mir ein Backupscript gebastelt, welches per Rsync meine Daten per ssh auf einen anderen Server kopiert und dann einen Ordner mit dem aktuellen Datum anlegt. Dort werden dann Hardlinks vom aktuellen Backup erstellt. Soweit so gut. Nun sollen alte Backups jedoch gelöscht werden. Dies klappt allerdings nicht. Es muss an meiner Auffassung von mtime liegen. Leider komme ich nicht weiter...

Der Abschnitt vom Backupscript:

Code:
OLD=/home/usb/backupweb/backup/old/
# Datum
NOW=`date '+%Y-%m'-%d`
NOW=/home/usb/backupweb/backup/old/$NOW


# mtime des aktuellen Backups aktualisieren
touch /home/usb/backupweb/backup/current
echo "Touch succeed"

# hardlink kopie
cp -al /home/usb/backupweb/backup/current/* $NOW
echo "copy succeed"

#alte backups loeschen
for FILE in "$( find $OLD -maxdepth 1 -type d -mtime +2 )"
do
rm -rf $FILE
done

In der 4 letzten Zeile sollen die 2 Tage alten (+2) Backups also gelöscht werden. Leider klappt es nicht, alles andere funktioniert.

Ein ls -l zeigt mir aber auch die korrekten Daten der Ordner. Sprich der Backupordner vom 09.09.2012 wurde auch am 09.09.2012 erstellt, der vom 10.09.2012 am 10.09.2012 usw.

lg

aiko
 
Ich mach das ungefähr so:

Code:
find /var/backups/files -type f -mtime +1 -exec rm -- {} \;

Grüße,
 
Ich mach das ungefähr so:

Code:
find /var/backups/files -type f -mtime +1 -exec rm -- {} \;

Grüße,

Ist ja nichts anderes als mein Befehl oben, nur ohne max-depth und nicht auf Ordner beschränkt...

Code:
find /home/usb/backupweb/backup/old/ -maxdepth 1 -type d -mtime +1
ergibt:
Code:
/home/usb/backupweb/backup/old/2012-09-09

Merkwürdig
 
Durch Deine Copy-Zeile wird die mtime von $NOW aktualisiert und hebelt Dein find aus.

Aber mir werden die Zeiten doch korrekt angezeigt:

Code:
ls -l /home/usb/backupweb/backup/old/                     
drwxr-xr-x 9 backupweb backupweb 4096 Sep  9 23:22 2012-09-09
drwxr-xr-x 9 backupweb backupweb 4096 Sep 10 14:31 2012-09-10
drwxr-xr-x 9 backupweb backupweb 4096 Sep 11 18:00 2012-09-11
drwxr-xr-x 9 backupweb backupweb 4096 Sep 12 05:00 2012-09-12

Sprich die Ordner vom jeweiligen Tag sind auch richtig benannt und haben die richtige Erstellungszeit...
 
Poste den Output von:
Code:
stat -c %y /home/usb/backupweb/backup/old
stat -c %y /home/usb/backupweb/backup/old/2012-09-11
stat -c %y /home/usb/backupweb/backup/old/2012-09-12

stat -c %z /home/usb/backupweb/backup/old
stat -c %z /home/usb/backupweb/backup/old/2012-09-11
stat -c %z /home/usb/backupweb/backup/old/2012-09-12
 
Code:
root@alex:/home/aiko# stat -c %y /home/usb/backupweb/backup/old
2012-09-12 05:00:02.901145628 +0200
root@alex:/home/aiko# stat -c %y /home/usb/backupweb/backup/old/2012-09-11
2012-09-11 18:00:20.648611667 +0200
root@alex:/home/aiko# stat -c %y /home/usb/backupweb/backup/old/2012-09-12
2012-09-12 05:00:30.360592554 +0200
root@alex:/home/aiko# stat -c %z /home/usb/backupweb/backup/old
2012-09-12 05:00:02.901145628 +0200
root@alex:/home/aiko# stat -c %z /home/usb/backupweb/backup/old/2012-09-11
2012-09-11 18:00:20.648611667 +0200
root@alex:/home/aiko# stat -c %z /home/usb/backupweb/backup/old/2012-09-12
2012-09-12 05:00:30.360592554 +0200
 
So, Deine Backups werden Nachts um 05:00 Uhr angelegt/gelöscht, aber Nachmittags um 18:00 Uhr verändert irgendetwas die mtimes und somit scheitert Dein find.
 
So, Deine Backups werden Nachts um 05:00 Uhr angelegt/gelöscht, aber Nachmittags um 18:00 Uhr verändert irgendetwas die mtimes und somit scheitert Dein find.

Ist die Uhrzeit nicht irrelevant? Der Tag ist doch entscheidend oder nicht? Ob nun 5 Uhr oder 18 Uhr... Das Backup vorher wurde um 18 Uhr angelegt, nicht um 5 Uhr...
 
Gib sicherheitshalber nochmal beide stat für 2012-09-10, danke.
Wann laufen Deine Backups denn nun regulär?
Ist es Dein komplettes Backupscript, oder steht da noch mehr drin?
 
Regulär um 05 Uhr Nachts. Das hat bis jetzt allerdings erst einmal geklappt, also heute morgen. Es gab hier Routingprobleme, deswegen war der Backupserver nur unregelmäßig erreichbar und deswegen wurden die vorher immer dann gemacht, wenn er erreichbar war... Das Backupscript kopiert vorher lediglich die Daten per rsync ueber ssh auf den Server.

Code:
root@alex:/home/aiko# stat -c %y /home/usb/backupweb/backup/old/2012-09-10
2012-09-10 14:31:36.255224135 +0200
root@alex:/home/aiko# stat -c %z /home/usb/backupweb/backup/old/2012-09-10
2012-09-10 14:31:36.255224135 +0200

Was mich einfach wundert ist folgendes:

Code:
root@alex:/home/aiko# find /home/usb/backupweb/backup/old/ -maxdepth 1 -type d -mtime +1
/home/usb/backupweb/backup/old/2012-09-09
/home/usb/backupweb/backup/old/2012-09-10
root@alex:/home/aiko# find /home/usb/backupweb/backup/old/ -maxdepth 1 -type d -mtime +2

Der zweite Befehl gibt nichts aus... Warum fehlt bei +1 auch der 2012-09-11 ? Müsste der nicht auch angezeigt werden?

lg
 
Last edited by a moderator:
Man, hat also alles funktioniert, war wohl nur nicht geduldig genug... Mal sehen wie sich das weiterentwickelt.
Vielen Dank schonmal
 
Back
Top