pyl*_*ver 167 linux data-recovery deleted-files
是否有恢复/取消删除已删除文件的命令rm?
$ rm -rf /path/to/myfile
Run Code Online (Sandbox Code Playgroud)
我怎样才能恢复myfile?如果有这样的工具,我该如何使用它?
slm*_*slm 89
有人在评论中提供的链接可能是您最好的机会。
这篇文章虽然看起来有点吓人,但实际上相当直接。一般来说,步骤如下:
使用 debugfs 查看文件系统日志
$ debugfs -w /dev/mapper/wks01-root
Run Code Online (Sandbox Code Playgroud)在 debugfs 提示符下
debugfs: lsdel
Run Code Online (Sandbox Code Playgroud)样本输出
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
Run Code Online (Sandbox Code Playgroud)在 debugfs 中运行命令
debugfs: logdump -i <7536655>
Run Code Online (Sandbox Code Playgroud)确定文件 inode
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
Run Code Online (Sandbox Code Playgroud)使用上述 inode 信息运行以下命令
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
Run Code Online (Sandbox Code Playgroud)文件已恢复到recovered.file.001.
如果以上内容不适合您,我过去曾使用过诸如photorec恢复文件之类的工具,但它仅适用于图像文件。我在我的博客的这篇文章中广泛地介绍了这种方法:
如何在 Fedora/CentOS/RHEL 上从数码相机的 SDD 卡中恢复损坏的 jpeg 和 mov 文件。
Gil*_*not 42
有一些机会,有时我可以使用此脚本或答案中的下一个解决方案恢复已删除的文件:
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(file 2>/dev/null /proc/*/fd/* | awk '$NF == "(deleted)"{print $(NF-1)}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
Run Code Online (Sandbox Code Playgroud)
还有另一个有用的技巧:如果您知道已删除文件中的模式,请键入alt+ sys+resuo以只读方式重新启动+重新挂载,然后使用 live-cd,用于grep在硬盘驱动器中搜索:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
Run Code Online (Sandbox Code Playgroud)
然后编辑/tmp/recover以仅保留您之前的文件。
嘿,如果在 unix 哲学中所有的都是文件,那么是时候利用这一点了,不是吗?
Wil*_*ker 40
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
Run Code Online (Sandbox Code Playgroud)
/dev/sdXN包含丢失文件的分区在哪里(mount如果不确定,请检查)。
需要一点时间,但是当我不小心删除了一些我尚未提交的源代码时起作用了!
小智 10
另一种方法可能是使用del而不是rm删除:
http://fex.belwue.de/fstools/del.html
del 具有取消删除功能并适用于任何文件系统。
当然,如果您已经使用“不带囚犯”删除了文件,这不是解决方案 rm :-}
小智 7
上周我遇到了同样的问题,我尝试了很多程序,比如 debugfs、photorec、ext3grep 和 extundelete。ext3grep 是恢复文件的最佳程序。语法非常简单:
ext3grep image.img --restore-all
Run Code Online (Sandbox Code Playgroud)
或者:
ext3grep /dev/sda3 --restore-all --after `date -d '2015-01-01 00:00:00' '+%s'` --before `date -d '2015-01-02 00:00:00' '+%s'`
Run Code Online (Sandbox Code Playgroud)
该视频是一个可以帮助您的迷你教程。
小智 6
通过外部接口连接驱动器
umount /dev/{sd*}extundelete --restore-all /dev/{sd*}有关更多信息,请参阅此链接:使用 extundelete 在 ext4 上取消删除刚刚删除的文件。
阅读来源:https ://wiki.archlinux.org/title/File_recovery#TestDisk_and_PhotoRec
Ext4magic 是另一个用于 ext3 和 ext4 文件系统的恢复工具。
要特别小心:
不克隆 HDD 的示例:
在开始之前,请使用上述命令检查您拥有的文件系统:
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
dev devtmpfs 3,9G 0 3,9G 0% /dev
run tmpfs 3,9G 1,8M 3,9G 1% /run
/dev/sda2 ext4 458G 151G 284G 35% /
tmpfs tmpfs 3,9G 4,3M 3,9G 1% /dev/shm
tmpfs tmpfs 3,9G 56M 3,8G 2% /tmp
Run Code Online (Sandbox Code Playgroud)
确定您使用的是 ext3 或 ext4 后,继续插入外部硬盘驱动器并从外部硬盘打开终端
要恢复过去 24 小时内删除的所有文件:
ext4magic /dev/sdXY -r
Run Code Online (Sandbox Code Playgroud)
要恢复目录或文件:
ext4magic /dev/sda2 -f path/to/lost/file -r
Run Code Online (Sandbox Code Playgroud)
小 R 标志 -r 只会恢复未被覆盖的完整文件。要恢复损坏的文件(部分覆盖的文件),请使用大 R 标志 -R。这也将恢复未删除的文件和空目录。
默认目标是 ./RECOVERDIR,可以通过添加选项 -d path/to/dest/dir 来更改。
如果目标目录中存在文件,则新文件将使用尾随井号 # 重命名。
要恢复“五天前”之后删除的文件:
ext4magic /dev/sdXY -f path/to/lost/file -a $(date -d -5days +%s) -r
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
838042 次 |
| 最近记录: |