How to Use the Command 'b2sum' (with Examples)
The b2sum
command is a tool used to calculate BLAKE2 cryptographic checksums for files and streams. BLAKE2 is a hash function designed for fast hashing, ensuring data integrity by producing a fixed-length string for any given input. The command is part of GNU Core Utilities and offers options to both create and verify checksums, providing an efficient way to ensure data has not been altered or corrupted.
Use case 1: Calculate the BLAKE2 Checksum for One or More Files
Code:
b2sum path/to/file1 path/to/file2 ...
Motivation:
Calculating the checksum of files is essential for ensuring data integrity. By generating a BLAKE2 checksum, you can verify that a file has not been changed or corrupted. This is particularly useful for file comparisons or to verify that downloads have not been tampered with.
Explanation:
b2sum
: This is the command used to generate BLAKE2 checksums.path/to/file1 path/to/file2 ...
: These are the paths to the files for which checksums need to be calculated. You can specify one or more files, separated by spaces.
Example Output:
bd070e09a468864ac301e1a4a25b9e573d7728e8b635fba70148130dc1bdc1ba path/to/file1
fc0e6b3900a9e4a9de1842c8da5f862aaf1ee6245f390386d918cdcac3fc5d98 path/to/file2
Use case 2: Calculate and Save the List of BLAKE2 Checksums to a File
Code:
b2sum path/to/file1 path/to/file2 ... > path/to/file.b2
Motivation:
If you want to maintain a record of the checksums for multiple files, especially when managing software distributions or backing up data, you can save their checksums to a file. This allows for later verification without having to store the files themselves.
Explanation:
>
: This redirects the output (the calculated checksums) to a file instead of displaying it on the console.path/to/file.b2
: This is the path to the file where you want to save the checksum data. It acts as a checksum repository for later verification.
Example Output:
The command itself does not output anything to the console because the output is redirected to path/to/file.b2
. The contents of file.b2
would be similar to this:
bd070e09a468864ac301e1a4a25b9e573d7728e8b635fba70148130dc1bdc1ba path/to/file1
fc0e6b3900a9e4a9de1842c8da5f862aaf1ee6245f390386d918cdcac3fc5d98 path/to/file2
Use case 3: Calculate a BLAKE2 Checksum from Standard Input (stdin)
Code:
command | b2sum
Motivation:
Sometimes you may need to calculate a checksum for data that isn’t stored in a file. By using standard input, you can pipe data directly from a command or another process into b2sum
to generate the checksum, which is useful in scripting or when dealing with real-time data.
Explanation:
|
: This is a pipe that takes the output of the preceding command and uses it as input forb2sum
.b2sum
: It reads from standard input when no files are specified, allowing it to process the piped data.
Example Output:
Suppose you have a file named data.txt and you run:
cat data.txt | b2sum
You might get an output like:
4b227777d4dd3fc027freea0aeae1b55 -
Use case 4: Read a File of BLAKE2 Checksums and Filenames to Verify All Files Have Matching Checksums
Code:
b2sum --check path/to/file.b2
Motivation:
Verification of checksums is crucial when ensuring files have not been altered. By checking against previously recorded checksums, you can determine if the current files match the originally intended state. This is significant for integrity checks during data transfer or distribution.
Explanation:
--check
: This option tellsb2sum
to read the specified checksum file and verify that the checksums match the corresponding files.path/to/file.b2
: This should contain the checksums and filenames to be verified.
Example Output:
path/to/file1: OK
path/to/file2: OK
Use case 5: Only Show a Message for Missing Files or When Verification Fails
Code:
b2sum --check --quiet path/to/file.b2
Motivation:
In certain situations, especially in automated scripts or large datasets, you may not want to be overwhelmed by success messages. Using the quiet option, you can keep your console output clean and only receive notifications for problems, such as missing files or checksum mismatches.
Explanation:
--quiet
: This suppresses output for files that pass verification, presenting only errors.--check
: This reads from a checksum file to verify files.path/to/file.b2
: This contains the checksums to be checked against the files.
Example Output:
If there are no issues, there will be no output. If a file is missing or the verification fails, you might see something like:
path/to/file2: FAILED
Use case 6: Only Show a Message When Verification Fails, Ignoring Missing Files
Code:
b2sum --ignore-missing --check --quiet path/to/file.b2
Motivation:
There might be scenarios where not all files are present, perhaps due to partial backups or selective inclusion. If you’re only interested in checksum failures and want to ignore missing files, this command configuration provides a streamlined way to audit without unnecessary alerts.
Explanation:
--ignore-missing
: Used to avoid displaying messages if a file is missing.--check
: For reading and verifying checksums from a specified file.--quiet
: Limits output to only errors from failed verifications.path/to/file.b2
: This is used as a reference for file checksums.
Example Output:
If a file’s checksum does not match, the output will still notify you, but it will not mention any missing files:
path/to/file3: FAILED
Use case 7: Check a Known BLAKE2 Checksum of a File
Code:
echo known_blake2_checksum_of_the_file path/to/file | b2sum --check
Motivation:
When you have a specific checksum and need to verify a file against it, perhaps for integrity checks or comparisons with documented values, this usage allows you to input the checksum directly for validation purposes.
Explanation:
echo known_blake2_checksum_of_the_file path/to/file
: This command constructs a checksum line similar to how it appears in a checksum file.|
: Pipes the output from theecho
command tob2sum
.--check
: Tellsb2sum
to verify the piped checksum against the provided file.
Example Output:
If the checksum matches:
path/to/file: OK
If it does not:
path/to/file: FAILED
Conclusion:
The b2sum
command provides various options for managing and verifying data integrity through BLAKE2 checksums. From creating checksums for numerous files simultaneously to verifying them against a stored list, b2sum
offers flexibility and reliability in ensuring file authenticity and detecting corruption. Understanding these use cases can empower users to efficiently incorporate checksum verification into their data management processes.