Hi Christian,
`dmesg` will show you where the checksum errors occur. Can be combined with a
`btrfs scrub` to get a full report over your entire volume.
If you see entries in the BackupPC pool or pc directories, that'll generally
mean that the affected file(s) are broken and can't be repaired from within the
backup system. Short of deep-diving on the individuals bits and hexes on the
disk for partial recovery, not a lot you can do about it; so if possible,
delete them and have them re-back-uped next time.
Note that without deleting them, v4 will not look at the contents of the files,
IIUC - given the filename/overall hash, it will just assume that the pool file
and the existing file on the client match and not retransfer. Only exception is
if the file changed or freshly appeared on the client, in which case it will be
compared against the pool file. So you'll usually not see a checksum error
during backup, only on the nightly scans where the contents of the pool files
are read and their hash is re-calculated.
Unfortunately, it is non-trivial and time-consuming to find where a file/hash
from the pool is referenced in backups. If I remember correctly, you need to
walk the attrib files for that.
I (think it was me who) wrote a utility for that ages ago; I can't even
remember. But it being based on zsh looks like it's not part of the BackupPC
distro, and could stem from me... Horrible coding, slow, documentation=code,
certainly not industry strength, all support my authorship. ;-)
To be executed in the BackupPC topdir, as far as I remember; it should roughly
print you where a file with a certain hash appears in your pool. But I guess my
use case was similar to yours. Timestamp is from 2019 and I didn't seem to have
used it since then. Which probably means it's been tested and written only with
v3; not sure whether it still works for v4 without changes, but you can try.
Please find it attached, and check whether it helps you something. No promises,
it might eat your data and your cat (though it shouldn't).
Cheers,
Alex
February 18, 2024 at 9:52 AM, "Christian Völker via BackupPC-users"
mailto:backuppc-users@lists.sourceforge.net?to=%22Christian%20V%C3%B6lker%20via%20BackupPC-users%22%20%3Cbackuppc-users%40lists.sourceforge.net%3E>>
wrote:
Hi all,
I have a large v4 pool (not cpool) (1.6TB) running on top of btrfs.
Is there any chance to perform a pool check from BackupPC to verify all
data in the pool is still ok?
I am getting some checksum errors from btrfs and I want to know if the
backed up data is still fine.
Thanks!
/KNEBB
___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:
https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:
https://github.com/backuppc/backuppc/wiki
Project:
https://backuppc.github.io/backuppc/
#!/bin/zsh
hash=$1
TOPDIR=$(pwd)
hashaa=$(printf %02x $((0x${hash[1,2]} & 0xfe)))
setopt nullglob
hosts=()
for i in pc/*/; do
host=${i:t}
find $TOPDIR/pc/$host/refCnt -maxdepth 1 -name poolCnt.'[01]'.$hashaa -type
f -print0 2>/dev/null | while read -d$'\0' poolCnt; do
BackupPC_poolCntPrint $poolCnt | grep $hash > /dev/null && hosts+=$host
done
done
echo matching hosts: $hosts
typeset -A host_nums
for host in $hosts; do
nums=()
for i in pc/$host/[0-9]*/; do
num=${i:t}
find $TOPDIR/pc/$host/$num/refCnt -maxdepth 1 -name
poolCnt.'[01]'.$hashaa -type f -print0 2>/dev/null | while read -d$'\0'
poolCnt; do
count=$(BackupPC_poolCntPrint $poolCnt | grep $hash | wc -l)
[[ $count -gt 0 ]] && {
nums+=$num
host_nums[$host,$num]=$count
}
done
done
done
echo matching backups:
for host_num count in ${(kv)host_nums}; do
echo " $host_num ($count occurences)" | sed -e 's/,/#/'
done | sort
echo searching backups:
for host_num count in ${(kv)host_nums}; do
host=${host_num%,*}
num=${host_num##*,}
echo " searching $host#$num"
find $TOPDIR/pc/$host/$num -maxdepth 1 -name 'f%2f*' -type d -print0
2>/dev/null | while read -d$'\0' sharePath; do
share=${sharePath:t}
share=${share[2,-1]}
share=${share:gs/%10/\\n}
share=${share:gs/%13/\\r}
share=${share:gs/%2f/\/}
share=${share:gs/%25/%}
echo "searching $host:$share#$num"
BackupPC_ls -R $sharePath | grep $hash
done
done
___
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:https://github.com/backuppc/backuppc/wiki
Project: https://backuppc.github.io/backuppc/