diff --git a/backup_and_restore/archive_with_checksum.sh b/backup_and_restore/archive_with_checksum.sh new file mode 100644 index 0000000..4e049c5 --- /dev/null +++ b/backup_and_restore/archive_with_checksum.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# This script creates a .tar.xz archive of a specified source directory, preserving file permissions, +# and names the archive using the source directory's name followed by the current date in DDMMYYYY format. +# Additionally, it generates a SHA-256 checksum file for the archive in the specified output directory. + +# Usage: +# 1. Make the script executable: `chmod +x archive_with_checksum` +# 2. Run the script by providing the path to the source directory as the first argument +# and the path to the output directory as the second argument. +# Example: `./archive_with_checksum /path/to/source_directory /path/to/output_directory` +# +# The script will produce an archive named `source_directory_DDMMYYYY.tar.xz` and a checksum file +# named `source_directory_DDMMYYYY.tar.xz.sha256` in the specified output directory. + +# Check if the correct number of arguments is provided +if [ "$#" -ne 2 ]; then + echo "Usage: $0 source_directory output_directory" + exit 1 +fi + +# Assign parameters +source_directory=$1 +output_directory=$2 + +# Get the base name of the source directory (without the full path) +source_name=$(basename "$source_directory") + +# Get the current date in DDMMYYYY format +current_date=$(date +%d%m%Y) + +# Create the archive name with the date, based on the source directory's name +archive_name="${source_name}_${current_date}.tar.xz" +archive_path="${output_directory}/${archive_name}" + +# Create the archive with file permissions preserved +tar -cJpf "$archive_path" "$source_directory" + +# Confirm archive creation and create a checksum if successful +if [ $? -eq 0 ]; then + echo "Archive created: $archive_path" + + # Generate SHA-256 checksum file for the archive in the output directory + checksum_file="${archive_path}.sha256" + sha256sum "$archive_path" > "$checksum_file" + + if [ $? -eq 0 ]; then + echo "Checksum file created: $checksum_file" + else + echo "Error creating the checksum file." + fi +else + echo "Error creating the archive." +fi