tar archives και corruption
George Notaras
gnot at g-loaded.eu
Thu Nov 29 17:58:09 EET 2007
On Thu, 2007-11-29 at 17:41 +0200, Giorgos Keramidas wrote:
> On 2007-11-29 17:10, George Notaras <gnot at g-loaded.eu> wrote:
> > Εάν ένα uncompressed tar αρχείο "χαλάσει" σε κάποιο σημείο, είναι δυνατό
> > το extraction αρχείων που δεν επηρεάζονται από την corrupted περιοχή?
>
> Μπορείς πάντα να χρησιμοποιήσεις το cpio(1), το οποίο υποστηρίζει
> per-file checksums.
>
> Για παράδειγμα, έφτιαξα ένα ~/crew directory με το source από το
> ``mercurial-crew'' branch, και το συμπίεσα με το cpio(1) σε BSD και
> Solaris:
>
> cd ~/crew
> find . | cpio -o -H crc > /var/tmp/mercurial.cpio
>
> Ύστερα με το hexl-mode του Emacs (ή ένα οποιοδήποτε άλλο hex editor)
> άλλαξα ένα byte στο αρχείο, και το έκανα extract:
>
> $ cpio -i -H crc < /var/tmp/mercurial-broken.cpio
> cpio: "contrib/churn.py" - checksum error
> 4768 blocks
> 1 error(s)
> $ echo $?
> 1
> $
>
> Η διαφορά είναι όντως το ένα byte που άλλαξα...
>
> $ gdiff -ruN crew crew-test
> diff -ruN crew/contrib/churn.py crew-test/contrib/churn.py
> --- crew/contrib/churn.py 2007-11-29 17:40:27.207508000 +0200
> +++ crew-test/contrib/churn.py 2007-11-29 17:40:36.591104000 +0200
> @@ -174,7 +174,7 @@
> revs.sort()
> stats = gather_stats(ui, repo, amap, revs, opts.get('progress'))
>
> - # make a list of tuples (name, lines) and sort it in descending order
> + # make a list of tuples (name, lines) and sort it in descending or er
> ordered = stats.items()
> ordered.sort(lambda x, y: cmp(y[1], x[1]))
>
> $
>
Το per-file checksums φαίνεται πολύ καλό χαρακτηριστικό για backup (ίσως
γι αυτό το cpio να χρησιμοποιείται στο rpm).
θεωρούσα το cpio (για κάποιον *ανεξήγητο* λόγο) 2ης κλάσης. Πρέπει να
διαβάσω τη man page γιατί δεν το έχω ξαναχρησιμοποιήσει. Δεν θα ήθελα
πάντως να γίνεται ξανά συμπίεση, επειδή σχεδόν όλα τα αρχεία είναι ήδη
συμπιεσμένα.
ΥΓ: Ήθελα να κάνω κι εγώ ένα τεστ με το tar, οπότε ευχαριστώ διπλά για
το όλο παράδειγμα. :)
More information about the Linux-greek-users
mailing list