Skip to main content

Package for retrieving and calculating checksums for XRootD

Project description

xrdsum

XrootD plugin for calculating checksums and storing them in extended attributes. Currently supports ADLER32 checksum and HDFS as backend. Borrows heavily from cephsum plugin.

This plugin is designed to easily accommodate new checksum types and backends. Additional dependencies for backends are defined as optional dependencies for the package (see usage instructions).

Actions Status Documentation Status Code style: black

PyPI version PyPI platforms

GitHub Discussion Gitter

Usage

xrdsum requires Python version >=3.8. To install, run:

pip install xrdsum[hdfs]
xrdsum --help
Usage: xrdsum [OPTIONS] COMMAND [ARGS]...

  Callback to give the --verbose and --debug options to all commands

Options:
  -v, --verbose         Verbose output
  -d, --debug           Debug output
  -l, --log-file TEXT   Log file
  --install-completion  Install completion for the current shell.
  --show-completion     Show completion for the current shell, to copy it or
                        customize the installation.
  --help                Show this message and exit.

Commands:
  get     Get the checksum of a file.
  verify  Check if a file has the correct checksum.

Example:

/usr/bin/time -v xrdsum --verbose  --debug get  /xrootd/dteam/user/jwalder/file_1GB_020 --read-size 128

xrootd config

# ensure cksum adler32 is included in the tpc directive, in order to calculate by default on transfer
ofs.tpc cksum adler32 fcreds ?gsi =X509_USER_PROXY autorm xfr 40 pgm /etc/xrootd/xrdcp-tpc.sh

# add this line to trigger external checksum calculation. Would be overwritten by other xrootd.chksum lines
xrootd.chksum max 50 adler32 /etc/xrootd/xrdsum.sh

with /etc/xrootd/xrdcp-tpc.sh containing:

#!/bin/sh

# from https://github.com/snafus/cephsum/blob/master/scripts/xrdcp-tpc.sh
#Original code
#/usr/bin/xrdcp --server -f $1 root://$XRDXROOTD_PROXY/$2

# Get the last two variables as SRC and DST, all others are assumed as additional arguments
OTHERARGS="${@:1:$#-2}"
DSTFILE="${@:$#:1}"
SRCFILE="${@:$#-1:1}"


/usr/bin/xrdcp $OTHERARGS --server -f $SRCFILE root://$XRDXROOTD_PROXY/$DSTFILE

and with /etc/xrootd/xrdsum.sh containing:

#!/usr/bin/env bash

RESULT=$(xrdsum get --store-result --chunk-size 64 --verbose --storage-catalog /etc/xrootd/storage.xml "$1")
ECODE=$?

# XRootD expects return on stdout - checksum followed by a new line
printf "%s\n" "$RESULT"
exit "$ECODE"

Conda installation example

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda
rm -f Miniconda3-latest-Linux-x86_64.sh
export PATH="/miniconda/bin:$PATH"
conda init
conda update -y conda
conda install python=3.10
pip install xrdsum[hdfs]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xrdsum-2025.2.1.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xrdsum-2025.2.1-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file xrdsum-2025.2.1.tar.gz.

File metadata

  • Download URL: xrdsum-2025.2.1.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xrdsum-2025.2.1.tar.gz
Algorithm Hash digest
SHA256 f95308522744e069b9bbb4d7436696895de6f27cc6f25f1adffc69c33c6fbc7e
MD5 b315e6f52cdf20d38db3ab9ab9f847a1
BLAKE2b-256 aa790f5de0fc2e03f33a63d17afdd29a4ff570bbf1c04c275d336a37d518c458

See more details on using hashes here.

File details

Details for the file xrdsum-2025.2.1-py3-none-any.whl.

File metadata

  • Download URL: xrdsum-2025.2.1-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xrdsum-2025.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c9c5c2f17452876077aac01e0f3814cf632d8408bbd28ff28fd2d1b3a7619384
MD5 a59bdcc5ddbc0f7e2beadb5aef11275a
BLAKE2b-256 de8f199b7fd5ef4fe7f7394f941f1bf3fee9b4207ba1869c31c621d26567367a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page