Files
2025-07-18 23:03:06 +07:00

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.