在我的 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'