Shellscript - 从文本文件读取文件路径进行恢复

Shellscript - 从文本文件读取文件路径进行恢复

我正在编写一个回收站脚本,可以调用它来删除文件和恢复文件。

删除功能目前运行良好,可以使用通配符、文件名(当前目录)或完整文件路径来调用。然后它会获取此文件并将其存储在 /root/Dustbin/... 中。

# del example.txt

在执行此操作的同时,它还将原始文件路径存储在垃圾箱中的 log.txt 文件中。

现在我的问题是 - 我该如何将文件恢复到其原始位置(存储在 log.txt 文件中)?

我的恢复代码目前是:

#!/bin/sh

for path in "$@"; do
find /root/Dustbin -name "$path" -exec mv {} ./ \;
done

#End of script

目前,这会将 Dustbin 中指定的文件恢复到我当前的位置,使用

# restore example.txt

谢谢

答案1

如果没有关于日志文件的更多详细信息,很难给出确切的答案,但这里有一些指示。

用于grep从日志中选择正确的行。确保命令足够具体,以便通过使用行首 ( ^) 之类的内容或匹配日志中使用的任何分隔符来固定搜索,从而获得一个确切的结果。

使用awksed从命令返回的行读取路径grep。再次确保获取完整路径以及您所需的路径元素。(注意空格等)

再次指定要恢复的目标时,请务必注意空格和其他字符,这些字符可能会mv通过正确引用路径来弄乱命令。为了避免文件名中的破折号问题,您可以--在要传递给mv命令的任何选项后添加。--表示大多数命令的参数结尾。

一些额外的想法:

  • 如果你把所有已删除的文件放在同一个目录中,则不需要查找,你可以简单地mv/root/Dustbin原始位置
  • 但是如果你将所有文件放在同一个目录中而不重命名它们,你最终可能会覆盖垃圾箱中的文件
  • 在删除和恢复脚本中添加足够的错误处理
  • 不要依赖这样的机制来保护重要文件!如果您需要确保可以恢复特定文件,则需要确保您有可用的正确备份,并确保您可以从中恢复

相关内容