main
Backup Scripts
A collection of shell scripts for creating and restoring backups of disks, directories, and folders on Linux systems.
Overview
This repository contains three backup utilities:
backup- Universal backup tool that handles both disks and directoriesbackup_disk- Specialized tool for disk/partition backupsbackup_folder- Specialized tool for directory backups using SquashFS
Requirements
- Linux operating system
- Root privileges (all scripts require sudo/root access)
- Basic utilities:
dd,gzip - Optional:
mksquashfs/unsquashfsfor SquashFS compression - Optional:
taras fallback for directory backups
Installation
- Clone or download the scripts to your system
- Make the scripts executable:
chmod +x backup backup_disk backup_folder - Optionally, move them to a directory in your PATH (e.g.,
/usr/local/bin/)
Usage
Universal Backup Tool (backup)
The main backup script that can handle both disks and directories automatically.
Create Backup
sudo ./backup --create --disk /dev/sda --file backup.img.gz
sudo ./backup --create --directory /home/user --file home_backup.sqsh
Restore Backup
sudo ./backup --restore --file backup.img.gz --disk /dev/sda
sudo ./backup --restore --file home_backup.sqsh --directory /home/user
Options
-c, --create- Create a backup-r, --restore- Restore from backup-d, --disk, --directory <path>- Source disk or directory-f, --file, --filename <path>- Backup file path-h, --help- Show help message
Disk Backup Tool (backup_disk)
Specialized tool for creating compressed disk images using dd and gzip.
Create Disk Backup
sudo ./backup_disk create /dev/sda disk_backup.img.gz
Restore Disk Backup
sudo ./backup_disk restore disk_backup.img.gz /dev/sda
Folder Backup Tool (backup_folder)
Specialized tool for creating compressed directory backups using SquashFS.
Create Folder Backup
sudo ./backup_folder create /home/user folder_backup.sqsh
Restore Folder Backup
sudo ./backup_folder restore folder_backup.sqsh /home/user
Features
- Smart Detection: The universal
backupscript automatically detects whether the source is a disk or directory - Multiple Compression Methods:
- SquashFS for directories (preferred)
- tar as fallback for directories
- gzip compression for disk images
- Progress Monitoring: Shows progress during disk operations
- Error Handling: Validates inputs and provides helpful error messages
- Flexible Usage: Multiple command-line argument formats supported
Safety Considerations
⚠️ WARNING: These scripts perform low-level disk operations and can cause data loss if used incorrectly.
- Always verify disk paths before running restore operations
- Test backups in a safe environment first
- Ensure you have sufficient disk space for backups
- Double-check source and destination paths
- Consider using
--dry-runoptions when available
Examples
Complete System Backup
# Backup entire disk
sudo ./backup_disk create /dev/sda system_backup.img.gz
# Backup home directory
sudo ./backup_folder create /home home_backup.sqsh
Selective Restore
# Restore only home directory
sudo ./backup_folder restore home_backup.sqsh /home
# Restore full system (be very careful!)
sudo ./backup_disk restore system_backup.img.gz /dev/sda
File Formats
- Disk backups: Compressed with gzip (
.img.gz) - Directory backups: SquashFS format (
.sqsh) or tar archives (.tar)
Troubleshooting
- Permission denied: Ensure you're running with root privileges
- Command not found: Install missing dependencies (
squashfs-toolsfor SquashFS support) - No space left: Check available disk space before creating backups
- Invalid device: Verify disk paths with
lsblkorfdisk -l
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Feel free to submit issues, feature requests, or pull requests to improve these backup scripts.
Languages
Shell
100%