Newsgroup: it.comp.os.linux.iniziare
Titolo: [HELP] script bash

Ciao a tutti,
premetto che ne so poco di linux, però mi servirebbe creare uno script da
lanciare con crontab in modo da eliminare ogni giorno dei file di backup
vecchi...
Cioé, in una cartella vengono creati (ogni giorno) dei file di backup con il
nome tipo "file_backup.20021201.tar.gz.gpg": mi servirebbe uno scriptino
che, lanciato quotidianamente, cancellasse i file più vecchi ad esempio di
20 giorni.
Il problema è che io non ne so niente di script bash (se si chiamano così),
e quindi mi servirebbe l'aiuto di una o più anime pie...
Attendo fiducioso... grazie
--
*®*´¯`·.¸¸.·´¯`·.¸¸.·´¯`·--=/- Darcan -\=--·´¯`·.¸¸.·´¯`·.¸¸.·´¯`*®*

 20 giorni.
fn="file_backup.$( date -d "20 days ago" +%Y%m%d ).tar.gz.gpg"
for f in file_backup*; do
    if [ "$f" < "$fn" ]; then
        rm $f
    fi
done
Ciao,
// Umberto Salsi
//
// 
http://digilander.libero.it/salsi
  --  GnuPG Key ID = BE2C F6CD 77E9 29AE

 // 
http://digilander.libero.it/salsi
  --  GnuPG Key ID = BE2C F6CD 77E9
29AE
Grazie 1000, funziona... anche se non capisco perché per ogni file che non
deve cancellare mi ritorna l'errore:
./removeold: file_backup.20021202.tar.gz.gpg: No such file or directory
(lo script l'ho chiamato removeold)
Comunque i file precedenti li cancella...
Grazie


Un'altra cosetta: come faccio a riferirlo ad una determinata cartella,
perché da crontab non me lo prende giusto...


>>:/OuZ\:<<<
per rispondermi in mail rimuovere TOGLIQUESTO

 ma forse funziona anche in /dir/che/vuoi/file_backup*
Grazie 1000
Ho fatto così:
fn="file_backup.$( date -d "20 days ago" +%Y%m%d ).tar.gz.gpg"
for f in /path/dir/file_backup.*; do
    if [ "$f" < "$fn" ]; then
        rm /path/dir/$f
    fi
done
Anche se rimane quel messaggio di errore per tutti i file che non deve
cancellare...
Cmq funziona...
Ciao


 perché da crontab non me lo prende giusto...
cd /path/dei/tuoi/backup
fn=...
for f in ...


 Cmq funziona...
a dirti la verita' neanch'io ho capito il perche' :(
btw prova a redirigere gli errori di rm a /dev/null ...


 20 giorni.
find nomeCartella -ctime +20 -exec rm -f {} \;
eventualmente -maxdepth 0 per non propagare l'azione alle sottocartelle.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 
qualcosa del tipo
find directory -name 'file_backup.*.gz.gpg' -ctime -20  -exec rm \{\}
ciao, Andrea

Grazie a tutti per l'aiuto :)


 btw prova a redirigere gli errori di rm a /dev/null ...
ehm... e come si farebbe?  :)


 ehm... e come si farebbe?  :)
rm /path/dir/$f 2> /dev/null


 find nomeCartella -ctime +20 -exec rm -f {} \;
Le soluzioni piu' semplici sono sempre le migliori. A patto, naturalmente,
che il supporto o il computer remoto sul quale si fanno i backup mantangano
la data corretta.


 rm /path/dir/$f 2> /dev/null
Non mi sembra cambi qualcosa...
Ciao e grazie


man find +  man rm + man bash =
DIR=/home/backup
find $DIR/* -mtime +20 -exec rm -f {} \;
Ciao

 la data corretta.
Se non lo fanno, qualunque metodo uno usi non funzionera`... A meno di non
andare a leggere la data all'interno del file stesso: a questo punto uno
si chiede chi scrive la data, come e a partire da che cosa. Alla fine anche
questo metodo non funzionera`. La soluzione piu` sicura e` forse di lasciare
gli ultimi N files in ordine cronologico, ma anche li` entrano in gioco le
date di creazione (come filesystem, nome del file o contenuto del file) e
siamo di nuovo al punto di partenza... Un numero incrementale, forse?
seq 1 19 |
  while read n; do
    mv -f file_backup.gz.$n file_backup.*.gz.`expr $n \+ 1`
  done
mv -f file_backup.gz file_backup.gz.1
Cosi` pero` perdiamo la data contenuta nel nome del file...
