#!/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