Hello John, Some of the algorithm are not fully implemented, they are more like place holders.
In our tests, the best one was XXHASH64, not sure that XXH3 was fully done as it was less good as XXHASH64. Maybe the Accurate fileset option is not ready for the check with XXHASH64 or XXH3, it should be available in the next major version. Do not forget that using the option at this place will read all files of your system at each incremental backup, modified files will be read twice. Best Regards, Eric On 4/18/25 22:48, John Lockard wrote:
From various places online I see that these are the options and signature comparison values for the various hash methods. 1 : SHA1 2 : SHA256 3 : SHA512 5 : MD5 6 : XXHASH64 7 : XXH3_64 8 : XXH3_128 But, then diving into the code (15.0.2) I see that there are issues with SHA512 and that's disabled in the code, in some places and not in others. I also see that for XXH3_64 the code says it was never implemented, and again disabled in some sections of the code, but not others. So, I'd like to use a Signature of: XXH3_128, that seems to pass the muster for the "Signature =" line in the Fileset. However in the "Accurate =" line, the "8" is being rejected, as in "Accurate = pino8" and "Verify = pins8". Am I reading the code wrong and "8" is not the value associated with XXH3_128? Also, of note, that none of this is updated in the documentation. There are mentions in the ChangeLog about various things being added, but in the appropriate section (FileSet Resource) they aren't there, or are completely wrong. - XXHASH is mentioned as a Signature option in the docs, yet that specific string can't be found as an option in the source. - There is no mention in the docs of XXH3_64 or XXH3_128. In the code both are acceptable for the Signature, yet they fail validation. Best I can see is that the options are not included in scan_include_options within src/dird/inc_conf.c. At line 281: /* Check if the options are correct */ switch(keyword) { case INC_KW_VERIFY: fs_options = "ipnugsamcd5123:V"; /* From dird/verify.c */ break; case INC_KW_BASEJOB: case INC_KW_ACCURATE: fs_options = "oipnugsamMcdA5123:JC"; /* From filed/accurate.c accurate_check_file() */ break; default: break; I suspect the first fs_options should be: fs_options = "ipnugsamcd5123678:V"; /* From dird/verify.c */ and, the second fs_options should be: fs_options = "oipnugsamMcdA5123678:JC"; /* From filed/accurate.c accurate_check_file() */ Though, in src/filed/accurate.c in the accurate_check_file function, at line no 640, in this chunk: /* Go through opts once again, this time check only for checksum-related opts */ for (char *p=opts; *p; p++) { switch (*p) { case '5': /* compare MD5 */ case '1': /* compare SHA1 */ case '2': /* compare SHA256 */ case '3': /* compare SHA512 */ case '6': /* compare XXHASH64 */ case '7': /* compare XXH3_64 */ case '8': /* compare XXH3_128 */ if (ff_pkt->type != FT_LNKSAVED && (S_ISREG(ff_pkt->statp.st_mode) && ff_pkt->flags & (FO_MD5|FO_SHA1|FO_SHA256|FO_SHA512))) { checksum = true; } break; case 'o': only_changed = true; break; default: break; } I'm thinking this line: ff_pkt->flags & (FO_MD5|FO_SHA1|FO_SHA256|FO_SHA512))) { Is probably supposed to read: ff_pkt->flags & (FO_MD5|FO_SHA1|FO_SHA256|FO_SHA512|O_XXHASH64|FO_XXH3_64|FO_XXH3_128))) { I'm pondering making these changes and seeing what happens. -John _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users
_______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users