如何恢复移动的 jpg 文件

如何恢复移动的 jpg 文件

在我的 ubuntu 系统上,我运行了一个命令,错误地将所有 jpg 文件移动到一个文件中

src_dir=$1
echo "src_dir: $src_dir"

for f in $src_dir/*; do
    if [ -f $f ]; then
        new_dir=$(date -r $f +"%b_%Y")
        if [ ! -d $new_dir ]; then
            mkdir $new_dir
        fi
        echo "File: $f "
        mv $f $src_dir/$new_dir
    fi
done

recoverJpeg我尝试使用和恢复我的 jpg 文件scalpel。这些工具能够恢复我很久以前删除的图像。但是我没有恢复任何使用 mv 命令移动的图像。

我知道这是一个长镜头,但是有什么办法可以恢复图像吗?

答案1

如果recoverJpeg找不到scalpel它们,我会说不。

然而,曾几何时,这些文件同时存在,因此它们的数据在磁盘中占据不同的位置。在同一安装点内移动文件应该只不过是删除源文件夹上的旧 inode,并在目标文件夹上创建一个新的 inode,指向保存数据的相同磁盘扇区。这就是为什么在同一安装点内移动大文件几乎是瞬时的,不会写入新数据,只会重用。因此,从理论上讲,mv删除您的文件可能(应该?)不会删除数据。然而当您将mv新文件添加到预先存在的文件时(即删除第一个文件的索引节点并创建一个新文件)同名但指向磁盘的另一部分),保存第一个文件数据的扇区被标记为空闲,并且可能被覆盖。 (请注意,所有这些可能并不完全正确,具体取决于您的文件系统,但根据我的经验,通常是这样)。

因此,当发生此类情况时,在使用取证工具之前将文件系统挂载为只读至关重要。如果他们找不到任何东西,也许数据真的消失了。如果您有足够的空间,创建文件系统的映像dd也可能有所帮助,因为它为未来的取证工作“结晶”了一些东西。

相关地,将这三行添加到 my 中.profile已经多次拯救了我的屁股:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

相关内容