it-swarm.com.de

Löschen Sie Dateien, die älter als 10 Tage sind, mithilfe des Shell-Skripts in Unix

Ich bin neu in Shell-Skripten. Kann mir jemand helfen? Ich möchte Skripte in einem Ordner vom aktuellen Datum bis zu 10 Tagen löschen. Das Skript sieht folgendermaßen aus:

2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script

Das Skript wird bei Crontab alle 10 Tage ausgeführt. Deshalb benötige ich das aktuelle Datum.

119
Steve88

find ist das gebräuchliche Werkzeug für diese Art von Aufgabe:

find ./my_dir -mtime +10 -type f -delete

ERKLÄRUNGEN

  • ./my_dir Ihr Verzeichnis (durch Ihr eigenes ersetzen)
  • -mtime +10 älter als 10 Tage
  • -type f nur Dateien
  • -delete keine Überraschung. Entfernen Sie es, um Ihren find Filter zu testen, bevor Sie den gesamten Befehl ausführen

Und pass auf, dass ./my_dir gibt es, um böse Überraschungen zu vermeiden!

402
Gilles Quenot

Einfach das Shell-Skript aufpeppen, um ältere Dateien zu löschen

#!/bin/bash

timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename

find $path -name "*.txt"  -type f -mtime +7 -print -delete >> $log

echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log

START_TIME=$(date +%s)

... code for backup ...or any other operation ....


END_TIME=$(date +%s)

ELAPSED_TIME=$(expr $END_TIME - $START_TIME)


echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time ::  $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) "  >> $log

Der Code baut auf der Antwort von sputnick auf und fügt ein paar weitere Dinge hinzu.

  • protokolldateien mit einem Zeitstempel
  • protokollordner angegeben
  • find sucht nach * .txt-Dateien nur im Protokollordner
  • protokolldateien, die älter als 7 Tage sind, werden gelöscht (vorausgesetzt, dies ist ein Sicherungsprotokoll).
  • notiert die Start-/Endzeit
  • berechnet die verstrichene Zeit ...
15
MarcoZen

Wenn Sie es sich leisten können, über die Dateidaten zu arbeiten, können Sie es tun

find -mmin +14400 -delete
6
glglgl