tar archives και corruption

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Nov 29 17:41:25 EET 2007


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]))

    $




More information about the Linux-greek-users mailing list