Rclone md5 per file
Jump to navigation
Jump to search
MD5 for blobs
Adds MD5 hashsum per file on blob that doesn't support the backend command
if backend
rclone backend set-md5 --all "azdst:test/foo"
Example of
test.txt test.txt.MD5 d8e8fca2dc0f896fd7cb4cb0031ba249 test.txt
If not
set -euox pipefail REMOTE="$1" MODE="${2:---mode=dir}" # Default to 'file' mode if not provided. Accepts --mode=file or --mode=dir HASHSUM="MD5" if [[ "$MODE" != "--mode=file" && "$MODE" != "--mode=dir" ]]; then echo "Error: Invalid mode. Please use --mode=file or --mode=dir" >&2 exit 1 fi TMP_DIR=$(mktemp -d) # Ensure the tmp dir is removed when the script exits trap 'rm -rf -- "$TMP_DIR"' EXIT echo "Starting hash generation with mode: ${MODE#--mode=}" rclone hashsum "$HASHSUM" "$REMOTE" | while read -r checksum file; do if [[ "$MODE" == "--mode=file" ]]; then mkdir -p "$TMP_DIR/$(dirname "$file")" echo "$checksum ${file##*/}" > "$TMP_DIR/$file.$HASHSUM" elif [[ "$MODE" == "--mode=dir" ]]; then DIR_PATH=$(dirname "$file") if [[ "$DIR_PATH" == "." ]]; then DIR_PATH="" # Store at the top level of the temp dir fi mkdir -p "$TMP_DIR/$DIR_PATH" echo "$checksum ${file##*/}" >> "$TMP_DIR/$DIR_PATH/MD5SUMS" fi done echo "Uploading all .$HASHSUM files to $REMOTE..." rclone copy "$TMP_DIR" "$REMOTE" --include="**MD5SUMS" echo "Checksum files have been added successfully."