Newsgroup: it.comp.os.linux.iniziare
Titolo: Svuotare archivi TAR

Sto costruendomi uno script per prelevare i file vecchi di 30 gg da una
cartella e spostarli in un archivio TAR ed contemporaneamente eliminare
dall'archivio TAR i file più vecchi di 30 gg, di modo che
nell'archivio rimangano solo i file degli ultimi 30 gg.
La prima parte del problema l'ho risolta con:
find $dirS -type f -mtime +30 -print0 | xargs -0 tar -rv --remove-file
-f /$dirD/bkp_temp.tar
Quello che non riesco a fare è eliminare dall'archivio tar i file più
vecchi di 30 gg, sicuramente dovrò usare l'opzione --delete ma come
faccio ad eliminare solo i file con mtime +30.

 30 gg da una cartella e spostarli in un archivio TAR...
A parte che Linux non ha cartelle ma directory,
bastava leggere i manuali
man tar
info tar
opzioni  -N  --newer  --newer-mtime  --after-date
E non c'è bisogno di find e xargs
Ma a parte questo, a cosa ti serve cancellare
dei file da un archivio?
E' molto meglio adottare una politica intelligente
(o meglio non cretina) dei backup. Ad esempio potresti
stabilire un metodo di rotazione dei backup, scaricare 
il vecchio archivio sul server di backup e creare ex novo 
l'archivio.

 l'archivio.
Però così facendo quando qualcuno cerca un file lo devi andare a
cercare in 30 archivi diffferenti ( tenendo conto dell'aggiornamento
giornalirero per i backup degli ultimi 30 giorni)
Con il metodo dell'unico archivio tar invece la ricerca dei file è
molto più semplice

 più vecchi di DATA non i più recenti.
l'opzione --delete serve proprio a questo.
tar --delete -f nomearchivio.tar nomedelfiledacancellare
La devi abbinare a un tar tvf filtrato per trovare i file piu' vecchi di
tot, ed eventualmente mettere la lista in un file da gestire con -T
tar --delete -f nomearchivio.tar -T nomedelfileconlistadacancellare
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 dell'aggiornamento giornalirero...
Opinabile: se devi cercare la parola "Melanzana" sulla
enciclopedia ti fai dare tutta i trentadue volumi oppure
chiedi solo il volume della "M"?
Certo dipende dal caso specifico, ma ti faccio notare che 
cancellare i dati dopo quattro settimane o dopo trenta
giorni e' la stessa cosa, col risultato che cosi' dovrai
cercare solo tra undici file.
Forse converrebbe ripassare i concetti di backup
incrementale, livelli di backup, frequenza di backup 
e rotazione dei supporti.

 tar --delete -f nomearchivio.tar -T nomedelfileconlistadacancellare
Ecco appunto, quello che non riesco a fare nonostante letture e
riletture del man e googlate varie e estrapolare da un archivio tar i
nomi dei file più vecchi di una determinata DATA
L'unica opzione che bene o male si avvicina è (--newer --after-date)
che però filtra i file più NUOVI e non i più VECCHI come mi
servirebbe.
Le uniche altre idee che ho e su cui sto facendo ricerche è un
programmino simile a "find" che però cerchi i file all'interno di un
archivio tar e mi tiri fuori la lista di nomi di file più vecchi di
una certa data, da dare in pasto poi come tu mi suggerivi  a tar ... -T
lista


 nomi dei file più vecchi di una determinata DATA
Perche' tar NON lo fa.
Hai due opzioni:
1) prendi il tar, estrai i file piu' nuovi di trenta giorni, e poi
risalvi il tutto assieme al resto.
2) Prendi il file generato da tar tvf >questi e con qualche riga di 
perl, di python, di ruby, di c, di visual basic, (no, di vb no) estrai
solo le righe che devi cancellare, li schiaffi in un file e segui
l'esempio che ti ho fatto.
Ma stai facendoti pippe mentali, se permetti.
Non e' cosi' che si fanno i backup.


 Non e' cosi' che si fanno i backup.
Ma chi ha mai parlato di Backup, non è un backup che sto creando ma un
"cestino" di sicurezza per pararmi il culo in caso l'utente xy si
svegli e pretenda di trovare file che non dovrebbero esistere più.
Non so quali sono le vostre attività ma in quella di sistemista ti
capita sempre di gestire più di un contenitore di appoggio che se
lasciato li senza procedure di pulitura automatica diventano in breve
tempo di dimensioni considerevoli. Ma "da bravo informatico" non puoi
permetterti di cancellare tutto perchè ci sarà sempre qualcuno che
verrà a dirti che aveva li un file "importantissimissimo", ed ecco che
nasce l'esigenza di un cestino che si svuoti automaticamente.
Che vuoi fare, siamo noi a dover trovare le soluzione e non a dettare
le condizioni.

 e rotazione dei supporti.
Non è di un Backup che stiamo parlando, vedi la risposta al post
sucessivo.

 ...
Come dici tu, ma io continuo a non vedere la differenza 
tra un backup gestito tramite script avviati da cron che
risiede su un disco (magari in RAID) in un server ed una
copia di sicurezza che si svuota automaticamente (a parte 
che la prima soluzione è molto facile da implementare).

 sicurezza (o cestino come lo chiami)?
Mi spiace fossilizzarmi su quest'aspetto della discussione piuttosto
che su bash e comandi. Anche perchè non è un trend sul Backup ma sul
tar. Ho una particolare esigenza (che ho esplicato penso
sufficentemente nei post prededenti) per cui mi avrebbe fatto comodo un
opzione di tar per elaborare i file più vecchi di DATA, non c'è!
pazienza!
Ciao e grazie comunque del tempo che mi hai dedicato.

 pazienza!
E non c'è per ottimi motivi.
Ma comunque:
#! /bin/sh
TEMPFILE=`mktemp /tmp/file_name.XXXX` || exit 1
tar -tf $ARCHIVIO --newer=$DATA >>$TEMPFILE &&\
tar -tf $ARCHIVIO | diff
  --old-line-format=''\
  --new-line-format='%L'\ 
  --unchanged-line-format=''\
  $TEMPFILE - &&\
tar --delete -f $ARCHIVIO -T $TEMPFILE
rm -f $TEMPFILE
Ovviamente questo sfoggio e' totalmente inutile 
perche' si puo' risolvere il problemino molto piu'
efficientemente con un paio di righe di PERL, se 
sai come fare.

 pazienza!
E non c'è per ottimi motivi.
Comunque puoi risolvere il problemino con un 
