Đôi lúc bạn lỡ tay hoặc vô ý xóa mất file, hình ảnh đáng giá lưu trên thẻ nhớ của điện thoại? Không sao! Mình sẽ hướng dẫn bạn cách phục hồi lại chúng trên hệ điều hành Linux. Mình đã thử và thành công.
Bước 0 (quan trọng nhất): khi bạn xóa file, thực chất dữ liệu vẫn còn, chẳng qua những vùng lưu trữ file đã xóa được hệ thống cho phép sử dụng để lưu những file mới, vì vậy những mảnh dữ liệu đã xóa sẽ mất dần => ngưng chép thêm file mới vào thiết bị lưu trữ đó (USB, SD, micro SD, HDD, ...), cố gắng giữ nguyên "hiện trường".
Bước 1: kết nối thiết bị lưu trữ đó với máy tính chạy HĐH Linux (máy tính mình Ubuntu 14.04 LTS)
--
Lưu ý: nếu bạn phục hồi file vừa mới xóa thì dùng TestDisk là đủ (Bước 2->7). Nếu file đã bị xóa cách đây khá lâu thì nên dùng Foremost (bước 8->10). Hoặc bạn có thể thử cả 2 nếu muốn :)
[-TestDisk-]
Bước 2: Cài đặt chương trình TestDisk dùng Terminal (Ctrl + Alt + T)
$ sudo apt-get install testdisk
Bước 3: Chạy photorec
$ photorec
Bước 4: Nhấn enter để tiếp tục. Như trong hình ổ cứng được mount ở đường dẫn /dev/sda (bạn cần nhớ chỗ này để tiện khi dùng chương trình foremost)
Bước 5: Chọn lựa chọn đầu tiên [Whole Disk]
Bước 6: Chọn kiểu của ổ cứng bạn cần phục hồi:
ext2/ext3/ext4 cho ổ cứng trong HĐH Linux
Other (FAT/NTFS/...) cho ổ cứng trong Windows, USB, thẻ nhớ (micro) SD
Bước 7: Chọn thư mục để chứa file sẽ được phục hồi. Thư mục này không nằm trong thiết bị lưu trữ bạn đang muốn phục hồi dữ liệu và còn trống nhiều dung lượng. Dùng phím mũi tên (lên xuống, trái phải) để định vị thư mục mong muốn. Sau đó nhấn phím "C". Đợi ít phút cho tới khi chạy xong!
[-TestDisk-]
[-Foremost-]
Bước 8: Cài đặt Foremost
$ sudo apt-get install foremost
Bước 9: Tạo thư mục chứa file sẽ được phục hồi. Ví dụ thư mục "recovery" nằm trong "Home". Thư mục này phải nằm ngoài thiết bị lưu trữ bạn đang cần phục hồi dữ liệu và còn trống nhiều dung lượng.
$ mkdir ~/recovery
Bước 10: Phục hồi dữ liệu bằng lệnh. Sau đó ngồi chờ, có thể sẽ mất kha khá lâu thời gian.
$ sudo foremost -i /dev/sda -o ~/recovery
-- Lưu ý: lúc mình phục hồi ảnh trong thẻ nhớ ngoài điện thoại (Android), đường dẫn sau "-i" của mình là
/dev/sdc , lệnh ở trên là ví dụ mình họa.
[-Foremost-]
* Các file, thư mục sau khi phục hồi sẽ có quyền sở hữu bởi root. Vì vậy ta nên đổi về quyền sở hữu user hiện tại.
1. Terminal gõ
$ whoami
minh (ta sẽ nhận được hồi đáp, ví dụ là "minh")
2. Đổi quyền sở hữu đối với file, thư mục
$ sudo chown minh ~/recovery -R
* Script sắp xếp tất cả các file ảnh trong cùng thư mục theo ngày được chụp ảnh đó (dựa vào thuộc tính "Date Taken")
#!/bin/sh
# Goes through all jpeg files in current directory, grabs date from each
# and sorts them into subdirectories according to the date
# Creates subdirectories corresponding to the dates as necessary.
for fil in *.jpg # Also try *.JPG
do
datepath="$(identify -verbose $fil | grep DateTimeOri | awk '{print $2 }' | sed s%:%/%g)"
if ! test -e "$datepath"; then
mkdir -pv "$datepath"
fi
mv -v $fil $datepath
done
-- Lưu vào file "sort_date_taken.sh" chẳng hạn, bỏ vào thư mục chứa ảnh cần sắp xếp. Dùng terminal chạy script vừa tạo:
$ cd path/to/your/folder
$ sudo sh sort_date_taken.sh
* Nguồn tham khảo:
http://askubuntu.com/questions/31450/tool-for-recovering-deleted-data-from-a-flash-drive
https://help.ubuntu.com/community/DataRecovery
http://www.linuxjournal.com/content/tech-tip-automaticaly-organize-your-photos-date
* Thắc mắc hoặc gặp vấn đề các bạn cứ comment nhé :)