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