Skip to main content

Verify with VRFY: Ensure the integrity of your file copies, hash by hash!

Project description

Verify with VRFY: Ensure the integrity of your file copies, hash by hash!

When beginning to explore cloud storage (or other methods of remotely storing files), one may become concerned about file integrity at some point. When dealing with a large number of individual files, how can one be certain that no file becomes corrupted during the storage process, and that downloaded files remain identical to their uploaded versions? This concern is particularly relevant after undergoing multiple segmentation and encryption/decryption processes. It's impractical to manually verify all files, making file corruption a common worry, especially for those using smaller cloud providers.

Those concerns are mitigated by using a small console application called vrfy. vrfy handles the heavy lifting and verifies the integrity of your backups for you! With a single, easy command, you can:

  1. Verify that copies are identical (i.e., all files are included in both locations, and -by using sha256 hash checksums- that not even a single bit was changed).
  2. Create and store a file with sha256 hash checksums beside your data. This file can be backed up with your data and used for verification later.
  3. Verify that your data is unchanged using the checksum file.

Installation

PIP:

Install vrfy using pip:

pip install vrfy --user

Usage the CLI

1. Verifing that two directories are identical

Verifing that the contents of '/path/of/backup' are identical to those of '/path/of/master'. For example, '/path/of/master' might be a local backup, whereas '/path/of/backup' might be loaded from cloud storage.

vrfy -m /path/of/master -b /path/of/backup -r

or (mismatched checksums are printed to console)

vrfy -m /path/of/master -b /path/of/backup -r -p

2. Storing checksums for future verification

Creating a file that lists checksums for all files within a directory:

vrfy -c /path/of/data

Using -r (recursive) all in sub-directories as well:

vrfy -r -c /path/of/data

3. Verifing files against stored checksums

Verifying that all files within a directory haven't been changed (i.e., their checksums still match):

vrfy -v /path/of/data

Using option -r (recursive) all sub-directories are verified as well:

vrfy -r -v /path/of/data

Using option -p (print) all mismatched checksums are printed to console for further inspection:

vrfy -p -r -v /path/of/data

Verifying the current working directory and all its sub-directories:

vrfy

Verifying file against an expected checksum:

vrfy -f /path/of/file/filename -cs expectedChecksum

Where "expectedChecksum" can be one of the following:

  • A string containing the expected sha256 hash digest.
  • A *.sha256sum-file that includes the expected hash digest.
  • A sums.csv-file created by vrfy that includes the expected hash digest.

4. Other CLI options

Display version of vrfy:

vrfy --version

Display checksum for given file:

vrfy -p -f /path/of/file/filename

Display help:

vrfy -h

Using the python package

Getting started

from vrfy.vrfy import vrfy
vf = vrfy()

# Get version string
versionStr = vf.GetVersion()

# Verify a single file to an expected checksum
Result = vf.VerifyFile("/path/and/fileName.xyz", "expectedChecksum")

# Verify contents of a directory to stored checksums
Result = VerifyFilesAgainstChecksums("path/to/directory")

# Create/store checksum file for later file verification
Result = WriteChecksumFile("path/to/directory")

# Verify that files within master and backup directories are identical
Result = VerifyFiles("path/to/directory/master", "path/to/directory/backup")

where

class Result:
    self.Result: bool            # Determines whether operation was successful (True) or not (False).
    self.Path: str               # Path the result object corresponds to. 
    self.PathError: bool         # True: Path is a valid directory, False otherwise.
    self.MissingFiles: list      # Missing files in (backup) directory that are included in master directory / checksum list.
    self.AdditionalFiles: list   # Additional files in (backup) directory that are NOT included in master directory / checksum list.
    self.ChecksumMismatch: list  # List of files with mismachting checksums.
    self.MasterChecksums: dict   # Dictionary of files within master directory and their checksums.
    self.BackupChecksums: dict   # Dictionary of files within backup directory and their checksums.

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

vrfy-0.4.0.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

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

vrfy-0.4.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file vrfy-0.4.0.tar.gz.

File metadata

  • Download URL: vrfy-0.4.0.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for vrfy-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d0d69bec324469cffc0a994c61c1825231f3e2e86975536b7b71168ee6b5a10f
MD5 f829e36063c9cb0888f1e60498e97abf
BLAKE2b-256 4791627db52db0406c32fa0cd4bdd72c9ef4cda7444063c400e27101dcbfb5f8

See more details on using hashes here.

File details

Details for the file vrfy-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: vrfy-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for vrfy-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5498fbcb2c66b9297822477ee69e4e891000d729a7efb11145e02039c2fcfebd
MD5 34d07e3ac887ebaff0ef7658c1e81cf8
BLAKE2b-256 510979e16dea297356a548a1c1c2353540c924786e3e54f94a23a70d7525936a

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