142 lines
4.1 KiB
Markdown
142 lines
4.1 KiB
Markdown
# 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 directories
|
|
- **`backup_disk`** - Specialized tool for disk/partition backups
|
|
- **`backup_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`/`unsquashfs` for SquashFS compression
|
|
- Optional: `tar` as fallback for directory backups
|
|
|
|
## Installation
|
|
|
|
1. Clone or download the scripts to your system
|
|
2. Make the scripts executable:
|
|
```bash
|
|
chmod +x backup backup_disk backup_folder
|
|
```
|
|
3. 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
|
|
```bash
|
|
sudo ./backup --create --disk /dev/sda --file backup.img.gz
|
|
sudo ./backup --create --directory /home/user --file home_backup.sqsh
|
|
```
|
|
|
|
#### Restore Backup
|
|
```bash
|
|
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
|
|
```bash
|
|
sudo ./backup_disk create /dev/sda disk_backup.img.gz
|
|
```
|
|
|
|
#### Restore Disk Backup
|
|
```bash
|
|
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
|
|
```bash
|
|
sudo ./backup_folder create /home/user folder_backup.sqsh
|
|
```
|
|
|
|
#### Restore Folder Backup
|
|
```bash
|
|
sudo ./backup_folder restore folder_backup.sqsh /home/user
|
|
```
|
|
|
|
## Features
|
|
|
|
- **Smart Detection**: The universal `backup` script 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-run` options when available
|
|
|
|
## Examples
|
|
|
|
### Complete System Backup
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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-tools` for SquashFS support)
|
|
- **No space left**: Check available disk space before creating backups
|
|
- **Invalid device**: Verify disk paths with `lsblk` or `fdisk -l`
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Contributing
|
|
|
|
Feel free to submit issues, feature requests, or pull requests to improve these backup scripts. |