Create the Backup Script
Prerequisites
Before setting up the backup script, ensure you have the following:
- The source directory you want to back up.
- Access to an SMB share where you want to store the backups.
- SMB credentials (username and password) for authentication.
Create the Backup Script
You can create a Bash script for this purpose. Save the following code in a file, e.g., weekly_backup.sh
:
#!/bin/bash
# Source directory to be backed up
source_dir="/path/to/source_directory"
# SMB share URL where you want to store the backups
smb_share="smb://username@hostname/share_name"
# Destination directory on the SMB share
smb_dir="/path/to/smb/directory"
# Define a timestamp for the current date
timestamp=$(date "+%Y%m%d")
# Set the backup directory name with the timestamp
backup_dir="${smb_dir}/backup_${timestamp}"
# Check if the destination directory exists, and create it if not
if ! smbclient -L "${smb_share}" -U username%password >/dev/null 2>&1; then
echo "Error: Unable to access the SMB share. Please check the SMB share URL, username, and password."
exit 1
fi
# Perform the backup using rsync
rsync -avz --no-links --exclude-from=/path/to/exclude_list.txt "$source_dir" "$backup_dir"
# Check if the rsync command was successful
if [ $? -eq 0 ]; then
echo "Backup completed successfully."
else
echo "Backup failed."
exit 1
fi
exit 0
Replace the placeholders in the script with your actual values:
-
/path/to/source_directory
: The directory you want to back up. -
smb://username@hostname/share_name
: The SMB share URL where you want to store the backups. -
/path/to/smb/directory
: The destination directory on the SMB share. -
username
andpassword
: Your SMB credentials. -
/path/to/exclude_list.txt
: Optionally, you can create an exclude list file to specify files or directories to exclude from the backup.
Make the script executable with the following command:
chmod +x weekly_backup.sh
Schedule the Script
To run the script automatically on a weekly basis, use a scheduling tool like cron
. Edit your crontab using the crontab -e
command and add a line like this to run the script every Sunday at midnight:
0 0 * * 0 /path/to/weekly_backup.sh
This schedules the script to run every Sunday at midnight, creating a new backup directory with a timestamp to avoid overwriting old backups.
Now, you have a weekly backup script in place to safeguard your data on an SMB share.