构建我的 bash 命令来减轻我的痛苦

构建我的 bash 命令来减轻我的痛苦

好的,简单介绍一下背景。我意外地 rm -rf 了我的 USB 外置硬盘。现在我正在使用 Photorec 恢复文件。(我意外删除了 800GB。这是我的个人文件。大部分是媒体,但也有其他内容,例如 pdf、xls、jpg、doc 等。)

因此,我连接了另一个剩余 350 GB 的外部硬盘,开始恢复,因为这是我仅有的。现在正在转储文件,我知道我很快就会用完它。

我需要一些帮助来自动执行某些恢复。恢复过程正在将文件转储到文件夹中。每个文件夹都以 recup_dir.x 开头

每个文件夹中都有我的文件。现在我想在每个文件夹中执行类似的操作;导航到每个文件夹并将所有 pdf、doc、xls、jpg 文件复制到我的计算机硬盘,然后从另一个外部硬盘中删除它们,这样我就可以睡觉了,希望它至少能恢复大部分所需文件。有人能帮忙吗 :(

cp *.docx /home/me/Desktop/docx/ || cp *.doc /home/me/Desktop/docx/ || cp *.xls /home/me/Desktop/xls/ || cp *.pdf /home/me/Desktop/pdf/ || cp *.jpg /home/me/Desktop/jpg/ && rm  *.doc *.docx *.pdf *.jpg *.xls

答案1

在确认文件恢复成功之前,我绝不会删除任何文件。尤其是在编写脚本时,脚本中的一个拼写错误就可能删除所有内容。

最好在恢复完成后擦除磁盘。


话虽如此,我会考虑使用 rsync,它应该是一个比较安全的选择。它有一个选项--删除源文件这可能就是你要找的。可以找到手册页这里

但是,您必须考虑的一个问题是,如果 rsync 在文件恢复/复制到磁盘时开始复制文件,会发生什么情况。同样,我认为出现错误的几率太高了。

答案2

更安全的方法

#!/bin/bash
rsync --progress -gioprtv <recoverydir>/*.doc* /home/me/Desktop/docx/ && \
rsync --progress -gioprtv <recoverydir>/*.xls /home/me/Desktop/xls/ && \
rsync --progress -gioprtv <recoverydir>/*.jpg /gome/me/Desktop/jpg/ && \
rsync --progress -gioprtv <recoverydir>/*.pdf /gome/me/Desktop/pdf/; \

rsync 通过对文件进行哈希处理来对文件进行端到端的验证,上述操作还应该为您提供有关单独复制过程的指示,这样您就不会坐在那里无所事事。

&& 确保只有前一步成功完成后才会继续,如果出现任何问题,您可以返回并编辑脚本并重复该过程。

将其放入文件 resovery.sh chmod+x 即可

永远不能删除源文件直到您有机会查看它们。

答案3

另外,你写道你的大部分内容都是媒体,但你没有提到你想恢复这些文件?如果是这样,对我来说,逆转逻辑并删除这些文件为你想保留的文件腾出空间更有意义。

如果是这样,你可以尝试类似这样的事情。 请注意,这可能会删除当前文件夹和所有子文件夹中的所有 AVI 文件!

find . -name "*.avi"                      - verify 
find . -name "*.avi" -exec rm -f {} \;    - delete

相关内容