Linux Alternatives to Windows Shadow Copies: Best Solutions for File Versioning and Backup


5 views

Windows Shadow Copies (Volume Shadow Copy Service) provide a convenient way to restore previous versions of files without requiring full backups. For Linux users seeking similar functionality, several robust alternatives exist that leverage native filesystem capabilities and open-source tools.

Modern Linux filesystems offer native snapshot capabilities:

# Create a Btrfs snapshot
sudo btrfs subvolume snapshot /mnt/data /mnt/data/snapshot_$(date +%Y%m%d)

# Create a ZFS snapshot
sudo zfs snapshot pool/data@$(date +%Y%m%d)

These snapshots are space-efficient (copy-on-write) and can be mounted read-only for file recovery.

Timeshift provides a user-friendly GUI and CLI for system snapshots:

# Install Timeshift on Debian/Ubuntu
sudo apt install timeshift

# Create a snapshot
sudo timeshift --create --comments "Pre-update snapshot"

Configuration files allow customization of snapshot frequency and retention policies.

For more granular control over specific directories:

# Install RSnapshot
sudo apt install rsnapshot

# Sample configuration (/etc/rsnapshot.conf)
interval hourly 6
interval daily 7
interval weekly 4

backup /home/ user_backups/

RSnapshot uses hard links to save space while maintaining complete file versions.

For block-level snapshots similar to VSS:

# Create an LVM snapshot (requires free space in volume group)
sudo lvcreate -L 10G -s -n data_snap /dev/vg00/data

# Mount the snapshot
sudo mount /dev/vg00/data_snap /mnt/snapshot

Remember that LVM snapshots are temporary and impact performance if overused.

Combine these tools with cron for automated versioning:

# Daily ZFS snapshot cron job
0 3 * * * /sbin/zfs snapshot pool/data@$(date +\%Y\%m\%d)

For comprehensive protection, consider implementing multiple approaches at different levels (filesystem, block, and application).


Windows Shadow Copies (Volume Shadow Copy Service) provides point-in-time snapshots of files, allowing users to restore previous versions. In Linux environments, we need similar functionality for backup and version control purposes, especially for small-scale setups where enterprise solutions might be overkill.

Linux offers several built-in and third-party solutions that provide similar functionality:

1. LVM Snapshots

Logical Volume Manager (LVM) provides snapshot capabilities at the block device level:


# Create a snapshot (replace variables as needed)
lvcreate --size 5G --snapshot --name snap01 /dev/vg00/lv_home

# Mount the snapshot
mkdir /mnt/snap01
mount /dev/vg00/snap01 /mnt/snap01

# When done, unmount and remove
umount /mnt/snap01
lvremove /dev/vg00/snap01

2. Btrfs/ZFS Snapshots

These modern filesystems include built-in snapshot capabilities:


# Btrfs snapshot example
btrfs subvolume snapshot /home /home/.snapshots/$(date +%Y%m%d)

# ZFS snapshot example
zfs snapshot tank/home@$(date +%Y%m%d)

1. Timeshift (GUI Solution)

Timeshift provides a user-friendly interface for system snapshots:


sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt update
sudo apt install timeshift

2. Back In Time (File-Level Backups)

A cron-based solution that maintains multiple versions of files:


sudo apt install backintime-qt4

For custom solutions, you can implement a backup system using rsync with hard links to save space:


#!/bin/bash
BACKUP_DIR="/backups/$(date +%Y-%m-%d_%H-%M-%S)"
PREVIOUS_BACKUP=$(ls -td /backups/* | head -n 1)

mkdir -p "$BACKUP_DIR"
rsync -a --link-dest="$PREVIOUS_BACKUP" /source/ "$BACKUP_DIR"

Schedule regular snapshots using cron:


# Add to crontab -e
0 3 * * * /usr/bin/btrfs subvolume snapshot /home /home/.snapshots/$(date +\%Y\%m\%d)

Different solutions require different restoration approaches:


# LVM snapshot restore
lvconvert --merge /dev/vg00/snap01

# Btrfs restore
btrfs subvolume delete /home
btrfs subvolume snapshot /home/.snapshots/20230101 /home

Consider these factors when selecting an approach:

  • Filesystem type (ext4 vs Btrfs/ZFS)
  • Required snapshot frequency
  • Available storage space
  • Need for automation
  • Restoration simplicity requirements