Bài viết này sẽ giới thiệu với các bạn về cách khôi phục tập tin bị xóa trên phân vùng Ext3 trên hệ điều hành Linux. Trong bài viết này chúng ta sẽ tìm hiểu về về công cụ ext3grep
, các ví dụ về phục hồi file bị xóa trên phân vùng định dạng ext3
dùng ext3grep
.
1. Giới thiệu về ext3grep
ext3grep
là một công cụ hỗ trợ chúng ta trong việc khôi phục các tệp trên filesystem ext3. Nó là công cụ giúp chúng tra tìm hiểu nguyên nhân và khôi phục dữ liệu rất hiệu quả. Công cụ này sẽ hiển thị thông tin về các file tồn tại trên một phân vùng và có thể phục hồi các file chúng ta đã xóa.
2. Cài đặt và sử dụng ext3grep
Để có thể khôi phục các tệp đã bị xóa chúng ta cần phải cài đặt công cụ ext3grep
trên hệ thống Ubuntu hoặc Debian như sau:
root@blogd-net-lab01:~# apt install ext3grep
Sau khi cài đặt thành công chúng ta có thể khôi phục các file trên filesystem ext3
.
Đầu tiên chúng ta copy một đĩa bằng lệnh dd có kích thước 500MB và chúng ta cần thực hiện định dạng phân vùng ở dạng ext3
để sử dụng:
root@blogd-net-lab01:~# dd if=/dev/sda2 of=/tempfs bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 6.73321 s, 77.9 MB/s
Qua lệnh trên chúng ta đã copy thành công một đĩa có tên tempfs
. Thực thi lệnh ls
để kiểm tra kết quả như sau:
root@blogd-net-lab01:~# ls -l / | grep tempfs
-rw-r--r-- 1 root root 524288000 Feb 11 16:23 tempfs
Tiếp thep chúng ta phải định dạng phân vùng dạng filesystem ext3
để sử dụng. Lệnh sau để định dạng phân vùng tempfs với ext3.
root@blogd-net-lab01:~# mkfs.ext3 /tempfs
mke2fs 1.44.6 (5-Mar-2019)
/tempfs contains a ext4 file system
last mounted on / on Tue Feb 11 15:10:08 2020
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 512000 1k blocks and 128016 inodes
Filesystem UUID: 72138497-c6dd-40ca-bac1-cee72f72199c
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
Sau khi định dạng thành công phân vùng mới các phân vùng đã có thể lưu trữ dữ liệu. Chúng ta phải gắn phân vùng vào thư mục. Thực hiện tạo thư mục /mnt/test-ext3grep
như sau:
root@blogd-net-lab01:~# mkdir /mnt/test-ext3grep
Gắn /mnt/test-ext3grep
vào /tempfs
bằng lệnh sau:
root@blogd-net-lab01:~# mount -t ext3 /tempfs /mnt/test-ext3grep/
Kiểm tra sử dụng đĩa với lệnh sau:
root@blogd-net-lab01:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs tmpfs 295M 1.2M 294M 1% /run
/dev/sda2 ext4 16G 5.2G 9.8G 35% /
tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/loop0 squashfs 54M 54M 0 100% /snap/lxd/10601
/dev/loop1 squashfs 90M 90M 0 100% /snap/core/6673
/dev/loop2 squashfs 92M 92M 0 100% /snap/core/8592
/dev/loop3 squashfs 67M 67M 0 100% /snap/lxd/13300
tmpfs tmpfs 295M 0 295M 0% /run/user/1000
/dev/loop4 ext3 477M 2.3M 449M 1% /mnt/test-ext3grep
Đầu tiên chúng ta thực hiện tạo file trong điểm gắn kết /mnt/test-ext3grep/
của phân vùng /tempfs
sử dụng filesystem ext3:
root@blogd-net-lab01:~# cd /mnt/test-ext3grep/
root@blogd-net-lab01:/mnt/test-ext3grep# touch blogd-net-test{1..5}
root@blogd-net-lab01:/mnt/test-ext3grep# ls -l
total 12
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test1
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test2
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test3
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test4
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test5
drwx------ 2 root root 12288 Feb 11 16:37 lost+found
root@blogd-net-lab01:/mnt/test-ext3grep# echo "Hello blogd 1" >blogd-net-test1
root@blogd-net-lab01:/mnt/test-ext3grep# cat blogd-net-test1
Hello blogd 1
Bây giờ chúng ta thực hiện xóa một file có tên blogd-net-test1
từ điểm gắn kết /mnt/test-ext3grep
:
root@blogd-net-lab01:/mnt/test-ext3grep# rm blogd-net-test1
Khôi phục dữ liệu sử dụng extgrep
Bây giờ chúng ta sẽ khôi phục file blogd-net-test1
đã xóa ở trên bằng ext3grep
.
Chúng ta cần ngắt kết nối điểm gắn kết ở trên:
root@blogd-net-lab01:/mnt/test-ext3grep# cd
root@blogd-net-lab01:~# umount /mnt/test-ext3grep/
Lưu ý: Chúng ta sử dụng lệnh
cd
để chuyển sang thư mục khác để thao tác ngắt kết nối hoạt động, nếu không lệnh umount sẽ hiển thị lỗi.
Để xem tất cả các file tồn tại trong /tempfs
chúng ta thực thi lệnh ext3grep
cùng với tùy chọn --dump-name
như bên dưới:
root@blogd-net-lab01:~# ext3grep --dump-name /tempfs
Running ext3grep version 0.10.2
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 63
Minimum / maximum journal block: 530 / 9270
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1581440500 = Tue Feb 11 17:01:40 2020
Number of descriptors in journal: 22; min / max sequence numbers: 2 / 5
Finding all blocks that might be directories.
D: block containing directory start, d: block containing more directory entries.
Each plus represents a directory start that references the same inode as a directory start that we found previously.
Searching group 0: DD++
Searching group 1:
Searching group 2:
Searching group 3:
Searching group 4:
Searching group 5:
...
Writing analysis so far to 'tempfs.ext3grep.stage1'. Delete that file if you want to do this stage again.
Result of stage one:
2 inodes are referenced by one or more directory blocks, 2 of those inodes are still allocated.
1 inodes are referenced by more than one directory block, 1 of those inodes is still allocated.
0 blocks contain an extended directory.
Result of stage two:
2 of those inodes could be resolved because they are still allocated.
All directory inodes are accounted for!
Writing analysis so far to 'tempfs.ext3grep.stage2'. Delete that file if you want to do this stage again.
blogd-net-test1
blogd-net-test2
blogd-net-test3
blogd-net-test4
blogd-net-test5
lost+found
Để khôi phục file blogd-net-test1
, chúng ta sử dụng tùy chọn --restore-all
kết hợp với lệnh ext3grep
như bên dưới:
root@blogd-net-lab01:~# ext3grep --restore-all /tempfs
Running ext3grep version 0.10.2
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 63
Minimum / maximum journal block: 530 / 9270
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1581440500 = Tue Feb 11 17:01:40 2020
Number of descriptors in journal: 22; min / max sequence numbers: 2 / 5
Writing output to directory RESTORED_FILES/
Loading tempfs.ext3grep.stage2... done
Restoring blogd-net-test1
Restoring blogd-net-test2
Restoring blogd-net-test3
Restoring blogd-net-test4
Restoring blogd-net-test5
Sau khi khôi phục hoàn tất thì tất cả các file đã được khôi phục sẽ chứa ở thư mục RESTORED_FILES, chúng ta có thể kiểm tra xem tệp đã bị xóa có được phục hồi không:
root@blogd-net-lab01:~# cd RESTORED_FILES/
root@blogd-net-lab01:~/RESTORED_FILES# ls -l
total 8
-rw-r--r-- 1 root root 14 Feb 11 17:02 blogd-net-test1
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test2
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test3
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test4
-rw-r--r-- 1 root root 0 Feb 11 17:01 blogd-net-test5
drwx------ 2 root root 4096 Feb 11 16:37 lost+found
root@blogd-net-lab01:~/RESTORED_FILES# cat blogd-net-test1
Hello blogd 1
Như vậy chúng ta đã khôi phục thành công file đã bị xóa trên ổ đĩa sử dụng filesystem ext3.
3. Lời kết
Qua bài viết trên, giúp cho chúng ta có thể khôi phục dữ liệu trên ổ đĩa sử dụng filesystem ext3
của hệ điều hành Linux bằng công cụ ext3grep
, từ đây giúp cho chúng ta có thể quản lý dử liệu và phục hồi dữ liệu khi cần thiết và công cụ ext3grep
giúp chúng ta quản lý máy chủ cách tốt hơn.