This project is an automated backup system designed to securely compress, encrypt, and store backups both locally and in the cloud. It's written in Bash and utilizes 7-Zip for compression and rclone for cloud storage integration.
- Customizable backup paths and to-ignore paths
- Secure compression with 7-Zip and password protection
- Local and cloud storage of backups
- Automatic deletion of old backups (both local and cloud)
- Comprehensive logging system
- Pre-backup checks (file existence, permissions)
- Post-backup actions (ownership changes)
The project is organized into several directories:
backups/
: Stores the compressed backup filesfunctions/
: Contains modular scripts for various functionalitiescloud/
: Scripts for cloud operationscompress/
: Compression logicpost_backup/
: Post-backup actionspre_backup/
: Pre-backup checksutils/
: Utility functions (logging, timing, etc.)
main.sh
: The main script that orchestrates the backup processpaths-to-backup.txt
: List of paths to be backed uppaths-to-ignore.txt
: List of paths to be ignored during backup
-
Configure the backup paths in
paths-to-backup.txt
-
Set up ignore patterns in
paths-to-ignore.txt
-
Configure cloud settings in
functions/config.sh
-
Run the backup:
./main.sh
- Bash
- 7-Zip
- rclone (configured for your cloud provider)
Edit functions/config.sh
to set:
BACKUP_PASSWORD
: Password for encrypting backupsRCLONE_REMOTE_NAME
: Your rclone remote nameRCLONE_REMOTE_BACKUP_FOLDER
: Remote folder for backupsRCLONE_MIN_AGE_TO_DELETE
: Minimum age of backups to delete from cloud
This project is licensed under [Your License Here]