• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Ordner löschen per Script

Thommy345

Newbie
Hallo zusammen,

dieses Script habe ich geschrieben und es macht auch was es soll :)

#!/bin/sh

ORDNER_1='/server/samba/benutzer1'
ZIEL_1='/server/backup/benutzer1'

ORDNER_01='/server/samba/benutzer2'
ZIEL_01='/server/backup/benutzer2'

#----------------------------------------------------------------------------

# Ordner mit aktuellem Datum erstellen
DATUM=$(date '+%d-%m-%Y')
mkdir $ZIEL_1/$DATUM
mkdir $ZIEL_01/$DATUM

#Datei kopieren
cp -R $ORDNER_1 $ZIEL_1/$DATUM/
cp -R $ORDNER_01 $ZIEL_01/$DATUM/

# Ordner älter als xTage löschen
find $ZIEL_1 -type d -mtime +6 -exec rm -rf {} \;
find $ZIEL_01 -type d -mtime +6 -exec rm -rf {} \;

# ende des Scripts

Ordner die älter sind als xTage werden auch immer schön gelöscht, aber ich bekomme auch immer eine email mit etwa diesem Text:

find: /server/backup/benutzer1/04-03-2007: No such file or directory
find: /server/backup/benutzer1/03-03-2007: No such file or directory
find: /server/backup/benutzer2/04-03-2007: No such file or directory
find: /server/backup/benutzer2/03-03-2007: No such file or directory

Kann sein das dieses Script etwas umständlich geschrieben ist, aber ich lerne noch :D
Hat jemand einen Tipp für mich wo der Fehler liegt?

Gruß
Thommy345
 

abgdf

Guru
Hi,

probier doch mal statt

Code:
find $ZIEL_1 -type d -mtime +6 -exec rm -rf {} \;

Code:
a=$(find $ZIEL_1 -type d -mtime +6)
rm -rf $a

(Vielleicht, bevor Du wirklich mit "rm -rf" da bei gehst, erstmal mit "echo" ausgeben, was Du da löschen willst ...).

Und bitte benutze doch die Code-Tags (
Code:
, [/cod] mit e).

Gruß
 

abgdf

Guru
Prima, der Grund dürfte Dich dann auch interessieren:
Ich schätze, "find" wird in einer Subshell ausgeführt, der exec-Teil wahrscheinlich in einer weiteren.
Bei "find .... exec rm" löscht die untere Subshell das, was die obere zu finden versucht.
Also erst alles finden lassen, das einer Variable zuweisen und dann alles löschen lassen.

Viele Grüße
 
Oben