sto implementando una funzione di estrazione di un backup sotto forma di tar.bz nel filesystem;la cosa è evidentemente delicata, per questioni di files già esistenti, date del file diverse, versioni salvate di recente ma che in realtà sono più vecchie rispetto ad altre ecc.
volevo provare a fare una cosa in stile etc-update di gentoo: se ci sono differenza fra il file nel filesystem e quello nel tar.bz l'utente decide cosa fare, e puo vedere i 2 files ecc..
codice:
esecuzione del codice:codice:#!/bin/bash cd / backup="/home/evellon/prova.2006-08-21-0935.tar.gz" echo "Diffences between filesystem and archive:" n=1 tar --diff --file $backup --directory / | grep -v "time" | while read i; do echo " $n) $i" read ciao let n++ done
ci sono 2 errori: nell'esecuzione non aspetta il mio imput, e in teoria sarebbero 2 i files ad avere differenze, infatti se lancio lo stesso programma commentando la linea "read ciao" l'output è il seguentecodice:$ sh check_differences.sh Diffences between filesystem and archive: 1) home/evellon/test/mklist.sh: Contents differ
questo è un ps -e durante il ciclo forcodice:sh check_differences.sh Diffences between filesystem and archive: 1) home/evellon/test/mklist.sh: Contents differ 2) home/evellon/test/lista_date: Size differs
se uso le pipes come sopra non dovrebbe essere eseguito primacodice:6546 pts/2 00:00:00 bash 6616 pts/1 00:00:00 sh 6617 pts/1 00:00:00 tar 6618 pts/1 00:00:00 gzip 6619 pts/1 00:00:00 grep 6620 pts/1 00:00:00 sh 6621 pts/2 00:00:00 ps
tar --diff --file $backup --directory /
poi, una volta che il processo è finito
grep -v "time"
e poi una volta che il processo è finito
while read i
?
a me sembra quasi che
ho provato a separare la lettura dal ciclo for in questo modo
files_list=$(tar --diff --file $backup --directory / | grep -v "time"i)
ma così, non so perchè, mi spara le varie righe nella stringa $files_list una dopo l'altra, non separate da degli \n, bensì da degli spazi

Rispondi quotando