pCloud Tip: Hash checker (oneliner)

Hi!

If you are using pCloud as a backend (using rclone), this is something you might want to use:

You are lucky if your data in the European region, because there pCloud saves the SHA256-hash of all files and you have access to those hashes using rclone. This here is a small oneliner, which compares the SHA256 with the filename of the blob:

rclone lsf pcloud:restic/data | xargs -I {} sh -c "echo checking data pcloud:restic/data/{}...; rclone lsjson pcloud:restic/data/{} --hash  | jq '.[] | if .Path != .Hashes.sha256 then .  else empty end'"

It prints those files whose hash do not match, example output:

checking data pcloud:restic/data/00/...
checking data pcloud:restic/data/01/...
checking data pcloud:restic/data/02/...
checking data pcloud:restic/data/03/...
{
  "Path": "03d0785c18575578a666160c4c1a013fed555b01020f95aba897176789d273ed",
  "Name": "03d0785c18575578a666160c4c1a013fed555b01020f95aba897176789d273ed",
  "Size": 11028992,
  "MimeType": "application/octet-stream",
  "ModTime": "2023-01-10T18:25:35Z",
  "IsDir": false,
  "Hashes": {
    "sha1": "864285377a3f7faca67236eeb948a9aac12c00e4",
    "sha256": "d220dc24d3c3f9aefd2ed1cbd82d84abf2563bfff3c6550313c44abb21f84437"
  },
  "ID": "f21710404428"
}
checking data pcloud:restic/data/04/...
checking data pcloud:restic/data/05/...
checking data pcloud:restic/data/06/...
checking data pcloud:restic/data/07/...
checking data pcloud:restic/data/08/...
checking data pcloud:restic/data/09/...
checking data pcloud:restic/data/0a/...
{
  "Path": "0abbc8867199cdc0012f9cb33dea6629c827911a28d80b45ab990e044d8b7ee1",
  "Name": "0abbc8867199cdc0012f9cb33dea6629c827911a28d80b45ab990e044d8b7ee1",
  "Size": 11698176,
  "MimeType": "application/octet-stream",
  "ModTime": "2023-01-09T20:49:08Z",
  "IsDir": false,
  "Hashes": {
    "sha1": "00305778f9cd2243947901be36c821f8fbd3e219",
    "sha256": "7fb530110dd3721e7eac4499c1eb57266e6a4e0451737072648c305420f6c12a"
  },
  "ID": "f21661393258"
}
checking data pcloud:restic/data/0b/...
checking data pcloud:restic/data/0c/...
{
  "Path": "0cbe4c46df9eb88d7efce3acd0ef760c69e03ead1f9ce65d4c63e64d51addd72",
  "Name": "0cbe4c46df9eb88d7efce3acd0ef760c69e03ead1f9ce65d4c63e64d51addd72",
  "Size": 8093696,
  "MimeType": "application/octet-stream",
  "ModTime": "2023-01-15T19:40:19Z",
  "IsDir": false,
  "Hashes": {
    "sha1": "d6559aab42d8b67012d9096aa581bf2d8cf5c806",
    "sha256": "0d9e535445d5417d718116c8635dd211d0ab9749765ce464255afd3b62dfad7f"
  },
  "ID": "f21941670585"
}
checking data pcloud:restic/data/0d/...

You can delete these files by hand (these are broken already).

This might speed up debugging and healing your pCloud repos :).

2 Likes