Release ISO images have broken RockRidge data

Thomas Schmitt scdbackup at gmx.net
Wed Apr 10 18:29:40 UTC 2013


Hi,

Warren Block wrote:
> sync will support hard links with -H

But how shall rsync know that the files in the ISO image stem from
hardlink siblings on the hard disk where the image was produced ? 

--------------------------------------------------------------------

I succeeded with this post-processing on a Linux system with bash
after xorriso -for backup ... -extract / livefs :

Learn the block address of content of /rescue/cat in the ISO image:

  lba=$(xorriso -indev ../FreeBSD-8.4-BETA1-amd64-livefs.iso \
                -find /rescue/cat -exec report_lba -- 2>/dev/null | \
        fgrep cat | \
        awk '{print $6}')

(Should yield 35682 with that image)

Get a list of all files with that block address, except /rescue/cat :

  siblings=$(xorriso -indev ../FreeBSD-8.4-BETA1-amd64-livefs.iso \
                     -find / -sort_lba -lba_range "$lba" 1 \
                             -exec report_lba -- \
                2>/dev/null | \
             grep '^File data lba' | awk '{print $12}' | \
             sed -e "s/'//g" | grep -v '^/rescue/cat$' )

(This should yield 137 files:
   /rescue/[ ... /rescue/zpool
)

Delete them in livefs/ and re-create them as links to livefs/rescue/cat:

  for i in $siblings
  do
    rm livefs$i
    ln livefs/rescue/cat livefs$i
  done


This brings the size of livefs/rescue from 676772 KiB to 4924 KiB.
ls -l livefs/rescue reports:

  total 676768
  -r-xr-xr-x 138 thomas thomas 5007184 2013-03-20 04:14 [
  -r-xr-xr-x 138 thomas thomas 5007184 2013-03-20 04:14 atacontrol
  ...
  -r-xr-xr-x 138 thomas thomas 5007184 2013-03-20 04:14 zpool

--------------------------------------------------------------------

(Confessedly one could get the file list as well by ls -l and grepping
 for the size of livefs/rescue/cat.)

--------------------------------------------------------------------


Have a nice day :)

Thomas



More information about the freebsd-stable mailing list