tar archives και corruption
George Notaras
gnot at g-loaded.eu
Fri Nov 30 13:00:25 EET 2007
On Thu, 2007-11-29 at 23:06 +0200, George Notaras wrote:
>
> Τεστ με TAR
>
Συνεχίζοντας από χθες....
=================================
ΤΕΣΤ με TAR
Καταστροφή 200 bytes των metadata του 2ου αρχείου εντός του tar archive
(1ο είναι ο κατάλογος bak/)
Πληροφορίες σχετικά με το USTAR format βρέθηκαν εδώ:
http://en.wikipedia.org/wiki/Tar_(file_format)#USTAR_format
=================================
$ md5sum bak/*
b0ec395ca8cb79f2ce98397ec0e00981 bak/1.pdf
fbe2f3f799579251682ee6de0e4d828d bak/2.pdf
afb18f2dbbb43673c641691b458dbcce bak/3.pdf
$ tar -cvf bak.tar bak/
bak/
bak/2.pdf
bak/3.pdf
bak/1.pdf
$ tar -dvf bak.tar bak/
bak/
bak/2.pdf
bak/3.pdf
bak/1.pdf
---
Στο USTAR format, τα metadata καταλαμβάνουν 500 bytes.
Το magic string ξεκινάει 257 bytes από την αρχή των metadata.
Στο παραπάνω tar αρχείο καταστρέφονται 200b metadata (200->400)
---
$ python
Python 2.5.1 (r251:54863, Oct 30 2007, 13:54:11)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> magic = "ustar \x00"
>>> f = open("bak.tar", "rb+")
>>> magic2_pos = f.read().find(magic, 258)
>>> meta2_start = magic2_pos - 57
>>> f.seek(meta2_start)
>>> f.write("0"*200)
>>> f.close()
>>>
$ tar -dvf bak.tar bak/
bak/
tar: Skipping to next header
bak/3.pdf
bak/1.pdf
tar: Error exit delayed from previous errors
$ mkdir out
$ tar -xvf bak.tar -C out/
bak/
tar: Skipping to next header
bak/3.pdf
bak/1.pdf
tar: Error exit delayed from previous errors
$ md5sum out/bak/*
b0ec395ca8cb79f2ce98397ec0e00981 out/bak/1.pdf
afb18f2dbbb43673c641691b458dbcce out/bak/3.pdf
==
ΣΥΜΠΕΡΑΣΜΑ:
Αν και καταστράφηκαν τα metadata ενός αρχείου εντός του archive,
εντούτοις το tar έχει τη δυνατότητα να "πηδήξει" το χαλασμένο αρχείο και
να συνεχίσει με το extraction των υπολοίπων.
Τα md5 sums δείχνουν ότι το extraction των υπόλοιπων αρχείων γίνεται
κανονικά.
More information about the Linux-greek-users
mailing list