我的情况怎么样?
我正在为一家在线管理 jpeg 文件的服务公司从事 Dev Ops 工作。我们遇到了一次不幸的部署,我们的媒体文件 (jpeg) 完全消失了。我预计我们的损失可能很简单,而且可以恢复。我认为包含我们 jpeg 文件的子目录的目录不知何故被取消了链接。如果是这样的话,我们应该能够恢复它们。
我到目前为止所做的事情以及我们的接待地点 - 详细信息
我几乎立刻就意识到了丢失,幸运的是,当时没有任何用户在线。我停止了我们的服务并关闭了我们的服务器。我这样做是为了防止对文件系统进行任何进一步的写入,因为我认为避免写入对于文件恢复至关重要。
我们在 DigitalOcean 中运行 Ubuntu 16.04。我使用 DigitalOcean 的恢复模式恢复了服务器。这允许在不运行虚拟主机和不运行虚拟主机上的服务的情况下挂载给定虚拟主机的文件系统。这对于执行任何形式的恢复来说应该足够且正确。
我需要一些地方来写入恢复数据。为此,我在同一个数据中心的 DigitalOcean 中还有另一台服务器(不幸的是是 SFO1)。我已使用 sshfs 挂载了该主机的文件系统。我应该能够通过 sshfs 将任何恢复数据从我的虚拟主机的文件系统(处于恢复模式)写入到另一台主机。
我选择以下实用程序来执行恢复:相簿
该实用程序实际上是两个实用程序——PhotoRec 和 TestDisk。
我们希望恢复的主机的文件系统是 ext4。PhotoRec 支持 ext4。TestDisk 可能不支持 ext4。没关系,根据文档,如果数据仍然存在且大部分未损坏,那么我们应该能够使用 PhotoRec 进行恢复。
这是我运行时的输出df -Th
——如您所见,我希望恢复的文件系统是/dev/vda1
类型ext4
并通过 挂载/mnt
。我安装了 photorec ,/lib/live/mount/overlay
它是 tmpfs 。我已通过 sshfs 在同一个数据中心内挂载了另一台主机,以放置任何恢复的数据:
root@xxxx-xxxxxx-xxxxxxxxx:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs tmpfs 1.6G 6.2M 1.6G 1% /run
/dev/sr0 iso9660 251M 251M 0 100% /lib/live/mount/medium
/dev/loop0 squashfs 220M 220M 0 100% /lib/live/mount/rootfs/rescue_rootfs.squashfs
tmpfs tmpfs 7.9G 14M 7.9G 1% /lib/live/mount/overlay
overlay overlay 7.9G 78M 7.8G 1% /
tmpfs tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
[email protected]:/ fuse.sshfs 311G 13G 298G 5% /mnt2/xxxxxx-xxxxxx-xxxxxx
/dev/vda1 ext4 311G 41G 270G 14% /mnt
当我运行时photorec
它只看到:
>Disk /dev/sr0 - 252 MB / 250 MiB (RO) - QEMU DVD-ROM
它根本看不到我想要执行恢复的文件系统。即:
/dev/vda1 ext4 311G 41G 270G 14% /mnt
我尝试过在文件系统挂载的情况下执行此操作,因为我觉得这样是正确的。但是,我们确实在一些在线文档中发现,某些文件恢复工具要求文件系统未挂载(这对我来说似乎很奇怪 - 这应该如何工作)。所以我尝试在未挂载的情况下执行它,但结果相同:它只看到:
>Disk /dev/sr0 - 252 MB / 250 MiB (RO) - QEMU DVD-ROM
有人对photorec
查看我的文件系统有什么建议吗:
/dev/vda1 ext4 311G 41G 270G 14% /mnt
我确实有一些备份,但不幸的是,我有大约七天没有备份的照片。理论上,没有它们我们也可以生存,我们可以联系我们的客户,从他们那里获取数据,然后重新处理并重新发布。但如果我只需点击几下按钮就能找回这些可能仍然在文件系统中无法访问的数据,那就太理想了。
用于此目的的帮助photorec
将是理想的,就像有关如何恢复我丢失/缺失的文件的任何其他建议一样。
谢谢!
答案1
您可以明确告诉 photorec 使用哪个块设备,例如photorec /dev/vda1
。它一定不能被挂载。
当然,在使用 photorec 之前,您应该尝试使用extundelete
,这样可以更快地恢复 ext* 文件系统上的文件。同样,它不能被挂载。
当然,您应该做好备份的准备。