Table of Contents#
- What is Partclone?
- Installing Partclone
- Understanding Partclone Basics
- Preparing for a Backup
- Creating a Smart Backup with Partclone
- Verifying Your Backup
- Restoring a Backup with Partclone
- Advanced Tips for Partclone
- Conclusion
- References
What is Partclone?#
Partclone is a partition cloning tool that operates at the file system level rather than the raw block level (like dd). It understands the structure of popular file systems (e.g., ext2/3/4, NTFS, Btrfs, XFS, FAT32) and only copies used data blocks, skipping empty or unused space. This “smart” behavior results in:
- Smaller backups: No wasted space from empty blocks.
- Faster transfers: Less data to read/write.
- Safer backups: Partclone validates file system integrity during cloning, reducing corruption risks.
Partclone is ideal for:
- Backing up large partitions with low data density (e.g., a 1TB drive with only 100GB of data).
- Migrating data to smaller drives (as long as the used data fits).
- Creating incremental backups (with additional tools).
Installing Partclone#
Partclone is pre-installed on many Linux live CDs/USBs (e.g., GParted Live, Clonezilla), but you can also install it on most Linux distributions.
Installation Commands by Distro:#
-
Debian/Ubuntu/Linux Mint:
sudo apt update && sudo apt install partclone -
Fedora/RHEL/CentOS:
sudo dnf install partclone -
Arch Linux/Manjaro:
sudo pacman -S partclone -
From Source (for other systems):
git clone https://github.com/Thomas-Tsai/partclone.git cd partclone ./autogen.sh ./configure make sudo make install
Verify installation with:
partclone --version Understanding Partclone Basics#
Partclone uses file system-specific tools (e.g., partclone.ext4 for ext4, partclone.ntfs for NTFS). The core syntax for creating a backup is:
partclone.<FS_TYPE> -c -s <SOURCE_PARTITION> -o <OUTPUT_IMAGE> [OPTIONS] Key Flags:#
-c: Clone mode (create a backup).-s <SOURCE>: Path to the source partition (e.g.,/dev/sda1).-o <OUTPUT>: Path to the output image file (e.g.,backup.img).-d: Enable debug mode (optional, useful for troubleshooting).-C: Verify the backup after creation (recommended).-z <LEVEL>: Compress the image on-the-fly (0-9, where 9 is maximum compression).
Preparing for a Backup#
Before creating a backup, follow these critical steps to avoid data corruption:
1. Identify the Source Partition#
Use tools like lsblk or fdisk to list partitions and confirm the source device path (e.g., /dev/sda2):
lsblk
# or
sudo fdisk -l /dev/sda # Replace /dev/sda with your disk 2. Unmount the Partition#
Never back up a mounted partition (except read-only mounts), as live writes can corrupt the backup. Unmount it first:
sudo umount /dev/sdXn # Replace /dev/sdXn with your partition If the partition is your root filesystem (e.g., /), boot from a live Linux USB to avoid mounting it.
3. Check File System Integrity#
Run a file system check to fix errors before backing up (critical for avoiding corrupted backups):
- ext2/3/4:
sudo e2fsck -f /dev/sdXn - NTFS:
sudo ntfsfix /dev/sdXn(orchkdskon Windows) - Btrfs:
sudo btrfs check /dev/sdXn - XFS:
sudo xfs_repair /dev/sdXn
4. Ensure Sufficient Storage#
Calculate the used space of the partition to confirm your backup drive has enough room:
df -h /dev/sdXn # Shows used space (e.g., 120G used) Creating a Smart Backup with Partclone#
Partclone requires the file system type to be specified (e.g., partclone.ext4 for ext4). Below are examples for common file systems.
Example 1: Backing Up an ext4 Partition#
Suppose we want to back up /dev/sda2 (an ext4 partition) to ~/backups/ext4_backup.img.
Command:#
sudo partclone.ext4 -c -s /dev/sdXn -o ~/backups/ext4_backup.img -C -d Breakdown:#
partclone.ext4: ext4-specific tool.-c: Clone mode (create backup).-s /dev/sdXn: Source partition (replace with your partition).-o ~/backups/ext4_backup.img: Output image path.-C: Verify the backup after creation.-d: Debug mode (optional, shows progress and errors).
Example 2: Backing Up an NTFS Partition#
For an NTFS partition (common on Windows systems), use partclone.ntfs:
sudo partclone.ntfs -c -s /dev/sdXn -o ~/backups/ntfs_backup.img -C -z 6 -z 6: Compress the image with gzip-level 6 (balances speed and size).
Example 3: Backing Up a Btrfs Partition#
Btrfs users can use partclone.btrfs:
sudo partclone.btrfs -c -s /dev/sdXn -o ~/backups/btrfs_backup.img -C Compressing Backups#
Partclone supports on-the-fly compression with -z (gzip) or -Z (xz). For maximum compression (smaller file, slower), use -z 9 (gzip) or -X (xz):
# Gzip compression (faster, moderate compression)
partclone.ext4 -c -s /dev/sdXn -o backup.img.gz -z 9
# XZ compression (slower, higher compression)
partclone.ext4 -c -s /dev/sdXn -o backup.img.xz -X Verifying Your Backup#
Always verify backups to ensure they’re not corrupted. Partclone includes a built-in verification flag (-C), but you can also manually check the image:
1. Use Partclone’s Verify Mode#
Add -C during backup creation to auto-verify:
partclone.ext4 -c -s /dev/sdXn -o backup.img -C 2. Check Image Size#
Compare the backup size to the used space of the source partition (they should be roughly equal):
du -h backup.img # Size of the backup
df -h /dev/sdXn # Used space on the source 3. Generate a Checksum#
Create an MD5/SHA256 checksum to validate integrity later:
md5sum backup.img > backup.img.md5
# To verify later:
md5sum -c backup.img.md5 Restoring a Backup with Partclone#
Restoring is the reverse of creating a backup. Ensure the target partition:
- Is unmounted.
- Has enough space for the restored data.
- Uses the same file system as the backup (or is empty).
Basic Restore Syntax:#
partclone.<FS_TYPE> -r -s <BACKUP_IMAGE> -o <TARGET_PARTITION> Example: Restore an ext4 Backup#
sudo partclone.ext4 -r -s ~/backups/ext4_backup.img -o /dev/sdYn -r: Restore mode./dev/sdYn: Target partition (e.g.,/dev/sdb1).
Critical Notes:#
- Overwrite Warning: Restoring will erase all data on the target partition. Double-check the target path!
- Resize After Restore: If the target partition is larger than the source, resize the file system afterward (e.g.,
resize2fs /dev/sdYnfor ext4).
Advanced Tips for Partclone#
1. Incremental Backups#
Partclone itself doesn’t support incremental backups, but you can combine it with tools like rsync or partclone-utils (a community add-on) to track changes. For example:
# Create a base backup
partclone.ext4 -c -s /dev/sdXn -o base_backup.img
# Later, create an incremental backup (using partclone-utils)
partclone.diff -s /dev/sdXn -b base_backup.img -o incremental_1.diff 2. Backup to Network Storage#
Pipe the backup to a remote server via ssh or samba:
partclone.ext4 -c -s /dev/sdXn -o - | ssh user@remote "cat > /backups/ext4_backup.img" 3. Encrypt Backups#
Add encryption with gpg or openssl for security:
partclone.ext4 -c -s /dev/sdXn -o - | gpg -c > backup.img.gpg
# To restore:
gpg -d backup.img.gpg | partclone.ext4 -r -s - -o /dev/sdYn 4. Automate with Scripts#
Create a bash script to automate backups (e.g., weekly backups with logging):
#!/bin/bash
SOURCE="/dev/sda2"
BACKUP_DIR="/mnt/external_drive/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_FILE="$BACKUP_DIR/backup_$TIMESTAMP.log"
# Check if source is unmounted
if grep -qs "$SOURCE" /proc/mounts; then
echo "Error: $SOURCE is mounted. Unmount first." | tee -a $LOG_FILE
exit 1
fi
# Run backup
sudo partclone.ext4 -c -s $SOURCE -o "$BACKUP_DIR/backup_$TIMESTAMP.img" -C -d | tee -a $LOG_FILE Conclusion#
Partclone revolutionizes partition backups by focusing on used data rather than entire blocks, making it a “smart” alternative to dd. With support for major file systems, compression, and verification, it’s a versatile tool for anyone looking to save time and storage on backups.
Remember:
- Always unmount partitions before backing up.
- Verify backups to avoid nasty surprises during restores.
- Test restores periodically to ensure backups work.