复制一些测试文件,然后把这些文件再删除,然后演示恢复:
[root@localhost ~]# cp /etc/passwd /tmp/sdb1[root@localhost ~]# cp /etc/hosts /tmp/sdb1 [root@localhost ~]# echo aaa > a.txt[root@localhost ~]# mkdir -p /tmp/sdb1/a/b/c[root@localhost ~]# cp a.txt /tmp/sdb1/a[root@localhost ~]# cp a.txt /tmp/sdb1/a/b[root@localhost ~]# touch /tmp/sdb1/a/b/kong.txt[root@localhost ~]# yum install -y tree[root@localhost ~]# tree /tmp/sdb1/tmp/sdb1├── a│ ├── a.txt│ └── b│ ├── a.txt│ ├── c #空目录│ └── kong.txt #空文件├── hosts├── lost+found└── passwd4 directories, 5 files
删除文件:
[root@localhost ~]# cd /tmp/sdb1[root@localhost sdb1]# lsahostslost+foundpasswd[root@localhost sdb1]# rm -rf a hosts passwd [root@localhost sdb1]# lslost+found
误删除文件后,第一件事要做什么???如何避免误删除的文件内容被覆盖???卸载需要恢复文件的分区或者以只读的方式挂载
[root@localhost sdb1]# cd /root[root@localhost ~]# df -hFilesystemSizeUsed Avail Use% Mounted on/dev/mapper/VolGroup-lv_root18G1.3G16G8% /tmpfs499M0499M0% /dev/shm/dev/sda1485M33M427M8% /boot/dev/sr03.6G3.6G0 100% /media/cdrom/dev/sdb11020M34M935M4% /tmp/sdb1[root@localhost ~]# echo "/dev/sdb1 /tmp/sdb1 ext4 defaults 0 0" >> /etc/fstab [root@localhost ~]# mount -o remount,ro /tmp/sdb1 #以读写的形式重新挂载/tmp/sdb1所在分区[root@localhost ~]# df -hFilesystemSizeUsed Avail Use% Mounted on/dev/mapper/VolGroup-lv_root18G1.3G16G8% /tmpfs499M0499M0% /dev/shm/dev/sda1485M33M427M8% /boot/dev/sr03.6G3.6G0 100% /media/cdrom/dev/sdb11020M34M935M4% /tmp/sdb1[root@localhost ~]# touch /tmp//sdb1/testfiletouch: cannot touch `/tmp//sdb1/testfile': Read-only file system
或者
[root@localhost ~]# umount /tmp/sdb1 #卸载/tmp/sdb1所在分区[root@localhost ~]# df -hFilesystemSizeUsed Avail Use% Mounted on/dev/mapper/VolGroup-lv_root18G1.3G16G8% /tmpfs499M0499M0% /dev/shm/dev/sda1485M33M427M8% /boot/dev/sr03.6G3.6G0 100% /media/cdrom
安装extundelete工具
上传extundelete到Linux中:从Windows上传extundelete文件到Linux,安装SecureCRT或者XShell[root@localhost ~]# yum install -y lrzsz # 安装后就有了rz命令和sz命令rz: 将Windows中的文件上传到Linuxsz: 将Linux中的文件下载到Windows
源码安装extundelete
[root@localhost ~]# cd /usr/local/src[root@localhost src]# ls[root@localhost src]# rzrz waiting to receive. zmodem trl+C ?100%105 KB105 KB/s 00:00:010 Errorsbz2...[root@localhost src]# lsextundelete-0.2.4.tar.bz2[root@localhost src]# tar xjvf extundelete-0.2.4.tar.bz2 [root@localhost src]# cd extundelete-0.2.4[root@localhost extundelete-0.2.4]# yum install -y e2fsprogs-devel gcc*[root@localhost extundelete-0.2.4]# ./configure #检查系统安装环境[root@localhost extundelete-0.2.4]# make -j 4 #编译,把源代码编译成可执行的二进制文件 。-j 4 使用4进程同时编译,提升编译速度或者使用4核CPU同时编译 。[root@localhost extundelete-0.2.4]# make install #编译安装
扩展:
install 和cp 有什么区别? install 复制时可以指定权限 cp不可以例:[root@localhost ~]# install -m 777 /bin/find /opt/a.sh[root@localhost ~]# ll /opt/
开始恢复:
方法一:通过inode结点恢复
方法二:通过文件名恢复
方法三:恢复某个目录,如目录a下的所有文件:
方法四:恢复所有的文件
[root@localhost extundelete-0.2.4]# mkdir /test #创建一个目录使用于存放恢复的数据[root@localhost extundelete-0.2.4]# cd /test[root@localhost test]# 通过inode结点查看被删除的文件名字:[root@localhost test]# extundelete /dev/sdb1 --inode 2File name| Inode number | Deleted status.2..2lost+found11passwd12Deletedhosts13Deleteda7377Deleted扩展:ext4文件系统的分区根目录的inode值为2,xfs分区根目录的inode值为64[root@localhost test]# ls -id /boot/ #xfs文件系统64 /boot/[root@localhost test]# ls -id /tmp/sdb12 /tmp/sdb1
方法一:通过inode结点恢复
[root@localhost test]# ls[root@localhost test]# extundelete /dev/sdb1 --restore-inode 12NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 9 groups loaded.Loading journal descriptors ... 61 descriptors loaded.[root@localhost test]# lsRECOVERED_FILES[root@localhost test]# ls RECOVERED_FILES/file.12[root@localhost test]# diff /etc/passwdRECOVERED_FILES/file.12 #对比文件内容,没有任何输出,说明恢复后的文件内容没有变化
方法二:通过文件名恢复
[root@localhost test]# extundelete /dev/sdb1 --restore-file passwd[root@localhost test]# diff /etc/passwd RECOVERED_FILES/passwd #对比文件内容,没有任何输出,说明恢复后的文件内容没有变化
推荐阅读
- Linux下几个最实用并且常用的快捷键收藏
- 2小时快速搭建一个高可用的IM系统
- linux服务器开发中网络数据分析与故障排查
- Linux常用的10个性能检测命令!
- 中国新一代卫星电推进系统成功实现在轨验证
- 万能3招,打破Win10系统CPU飙升100%尬局!值得一试!
- Win10系统重置电脑好还是重装系统好?
- 灵活的使用C ++中的反射系统
- linux系统root密码忘记了怎么办
- 高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!