>>>>> "tt" == Toby Thain <t...@telegraphics.com.au> writes:

    tt> I know this was discussed a while back, but in what sense does
    tt> tar do any of those things? I understand that it is unlikely
    tt> to barf completely on bitflips, but won't tar simply silently
    tt> de-archive bad data?

yeah, I just tested it, and you're right.  I guess the checksums are
only for headers.  However, cpio does store checksums for files'
contents, so maybe it's better to use cpio than tar.  Just be careful
how you invoke it, because there are different cpio formats just like
there are different tar formats, and some might have no or weaker
checksum.

NetBSD 'pax' invoked as tar:
-----8<-----
castrovalva:~$ dd if=/dev/zero of=t0 bs=1m count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 0.022 secs (47662545 bytes/sec)
castrovalva:~$  tar cf t0.tar t0
castrovalva:~$ md5 t0.tar
MD5 (t0.tar) = 591a39a984f70fe3e44a5e13f0ac74b6
castrovalva:~$ tar tf t0.tar
t0
castrovalva:~$ dd of=t0.tar seek=$(( 512 * 1024 )) bs=1 conv=notrunc
asdfasdfasfs
13+0 records in
13+0 records out
13 bytes transferred in 2.187 secs (5 bytes/sec)
castrovalva:~$ md5 t0.tar
MD5 (t0.tar) = 14b3a9d851579d8331a0466a5ef62693
castrovalva:~$ tar tf t0.tar
t0
castrovalva:~$ tar xvf t0.tar
tar: Removing leading / from absolute path names in the archive
t0
tar: ustar vol 1, 1 files, 1054720 bytes read, 0 bytes written in 1 secs 
(1054720 bytes/sec)
castrovalva:~$ hexdump -C t0
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0007fe00  61 73 64 66 61 73 64 66  61 73 66 73 0a 00 00 00  |asdfasdfasfs....|
0007fe10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00100000
castrovalva:~$ 
-----8<-----

GNU tar does the same thing.

NetBSD 'pax' invoked as cpio:
-----8<-----
castrovalva:~$ dd if=/dev/zero of=t0 bs=1m count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (58254222 bytes/sec)
castrovalva:~$ cpio -H sv4cpio -o > t0.cpio
t0
castrovalva:~$ md5 t0.cpio
MD5 (t0.cpio) = d5128381e72ee514ced8ad10a5a33f16
castrovalva:~$ dd of=t0.cpio seek=$(( 512 * 1024 )) bs=1 conv=notrunc
asdfasdfasdf
13+0 records in
13+0 records out
13 bytes transferred in 1.461 secs (8 bytes/sec)
castrovalva:~$ md5 t0.cpio
MD5 (t0.cpio) = b22458669256da5bcb6c94948d22a155
castrovalva:~$ rm t0
castrovalva:~$ cpio -i < t0.cpio
cpio: Removing leading / from absolute path names in the archive
cpio: Actual crc does not match expected crc t0
-----8<-----

Attachment: pgpoIIGmEkmDv.pgp
Description: PGP signature

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to