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

4.1 KiB

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:
    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

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 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

# 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-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 file for details.

Contributing

Feel free to submit issues, feature requests, or pull requests to improve these backup scripts.