Recovering accidentally deleted files on an ext4 file system can be challenging because ext4 does not natively provide an undelete feature. When a file is deleted, its metadata is removed, making recovery difficult. However, there are methods and tools you can try depending on the situation. Here’s a step-by-step approach:
Immediate Actions After Deletion
-
Stop Writing to the Disk: When a file is deleted, its data is not immediately erased but marked as free space. Any further writes to the disk may overwrite this data, making recovery impossible. Unmount the affected partition immediately if possible:
bash
sudo umount /dev/sdX1
Replace/dev/sdX1
with your partition name. -
Switch to Read-Only Mode: If unmounting is not possible, remount the filesystem as read-only to prevent further writes:
bash
sudo mount -o remount,ro /dev/sdX1
Recovery Methods
1. Use a Recovery Tool
There are specialized tools to recover deleted files on ext4:
TestDisk
TestDisk is a powerful tool for recovering deleted files and partitions.
1. Install TestDisk:
bash
sudo apt install testdisk
2. Run TestDisk:
bash
sudo testdisk
3. Follow the interactive menu to scan the disk and look for deleted files.
Extundelete
Extundelete is specifically designed for recovering deleted files on ext3/ext4 filesystems.
1. Install Extundelete:
bash
sudo apt install extundelete
2. Recover files:
If you want to recover all deleted files:
bash
sudo extundelete --restore-all /dev/sdX1
To recover a specific file:
bash
sudo extundelete --restore-file <path_to_file> /dev/sdX1
Photorec
Photorec can recover files from many filesystem types but works best with media files and documents.
1. Install Photorec:
bash
sudo apt install photorec
2. Run Photorec:
bash
sudo photorec
3. Choose the partition and file types for recovery.
2. Manually Search for Data
If recovery tools fail, you may attempt manual recovery using low-level utilities like debugfs
. Be cautious as this is an advanced method:
1. Launch debugfs
:
bash
sudo debugfs /dev/sdX1
2. Use the lsdel
command to list deleted inodes:
bash
lsdel
3. Locate the file and recover its inode manually.
3. Restore from Backups
If you have a backup system in place (e.g., rsync
, Bacula
, Amanda
, or snapshots), restore the files from backups. This is the most reliable recovery method.
4. Use Disk Imaging
If the above methods don’t work or the disk is heavily used, create an image of the disk to prevent further overwrites:
1. Use dd
or a similar tool:
bash
sudo dd if=/dev/sdX1 of=/path/to/disk_image.img
2. Run recovery tools on the disk image instead of the original disk.
Preventive Measures
To avoid future data loss:
– Enable Backups: Use tools like rsync
, Timeshift
, or enterprise solutions to take periodic backups.
– Enable Snapshots: If using LVM or Btrfs, configure snapshots for quick recovery.
– Use Recovery-Friendly Filesystems: Consider filesystems like ZFS or Btrfs for advanced data recovery options.
If recovery is critical, consider consulting a professional data recovery service.