I corrected a small error in the script and allowed for setting TopDir with an optional second argument
------------------------------------ function BackupPC_zcatPool () { local BACKUPPC_ZCAT=$(which BackupPC_zcat) local TOPDIR=/var/lib/backuppc [ -n "$2" -a -d "$2" ] && TOPDIR=$2 local CPOOL="$TOPDIR/cpool" local POOL="$TOPDIR/pool" [ -n "$BACKUPPC_ZCAT" ] || BACKUPPC_ZCAT=/usr/share/backuppc/bin/BackupPC_zcat local file=${1##*/} #Strip the path prefix #If attrib file... file=${file/attrib[0-9a-f][0-9a-f]_/attrib_} #Convert inode format attrib to normal attrib file=${file##attrib_} #Extract the md5sum from the attrib file name local ABCD=$(printf '%04x' "$(( 0x${file:0:4} & 0xfefe ))") local prefix="${ABCD:0:2}/${ABCD:2:2}" # echo $prefix if [ -e "$CPOOL/$prefix/$file" ]; then #V4 - cpool $BACKUPPC_ZCAT $CPOOL/$prefix/$file elif [ -e "$POOL/$prefix/$file" ]; then #V4 - pool cat $CPOOL/$prefix/$file elif [ -e "$CPOOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" ]; then #V3 - cpool $BACKUPPC_ZCAT "$CPOOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" elif [ -e "$POOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" ]; then #V3 - pool cat "$POOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" else echo "Can't find pool file: $file" >/dev/stderr fi } backu...@kosowsky.org wrote at about 11:16:53 -0400 on Thursday, June 11, 2020: > > I frequently use the following Bash shell function to allow me to locate and > read pool/cpool files as I got tired of manually converting to the > pool heirarchy decoding. It's not very complicated, but helpful > > 1. You can enter either: > - 32 hex character digest (lower case): <32hex> > - attrib file name with/without preceding path and either in the > "normal" or inode form. i.e.. > [<path>/]attrib_<32hex> > [<path>/]attrib<2hex>_<32hex> > > 2. It works with pool or cpool > 3. It works with v3/v4 > > ##################################################################################### > function BackupPC_zcatPool () > { > local BACKUPPC_ZCAT=$(which BackupPC_zcat) > [ -n "$BACKUPPC_ZCAT" ] || > BACKUPPC_ZCAT=/usr/share/backuppc/bin/BackupPC_zcat > [ -n "$CPOOL" ] || local CPOOL=/var/lib/backuppc/cpool > [ -n "$POOL" ] || local POOL=/var/lib/backuppc/pool > > local file=${1##*/} #Strip the path prefix > #If attrib file... > file=${file/attrib[0-9a-f][0-9a-f]_/attrib_} #Convert inode format > attrib to normal attrib > file=${file##attrib_} #Extract the md5sum from the attrib file name > > local ABCD=$(printf '%x' "$(( 0x${file:0:4} & 0xfefe ))") > local prefix="${ABCD:0:2}/${ABCD:2:2}" > # echo $prefix > > if [ -e "$CPOOL/$prefix/$file" ]; then #V4 - cpool > $BACKUPPC_ZCAT $CPOOL/$prefix/$file > elif [ -e "$POOL/$prefix/$file" ]; then #V4 - pool > cat $CPOOL/$prefix/$file > elif [ -e "$CPOOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" ]; then #V3 > - cpool > $BACKUPPC_ZCAT "$CPOOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" > elif [ -e "$POOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" ]; then #V3 > - pool > cat "$POOL/${file:0:1}/${file:1:1}/${file:2:1}/$file" > else > echo "Can't find pool file: $file" >/dev/stderr > fi > } > > > _______________________________________________ > BackupPC-users mailing list > BackupPC-users@lists.sourceforge.net > List: https://lists.sourceforge.net/lists/listinfo/backuppc-users > Wiki: http://backuppc.wiki.sourceforge.net > Project: http://backuppc.sourceforge.net/ _______________________________________________ BackupPC-users mailing list BackupPC-users@lists.sourceforge.net List: https://lists.sourceforge.net/lists/listinfo/backuppc-users Wiki: http://backuppc.wiki.sourceforge.net Project: http://backuppc.sourceforge.net/