Shellscript - чтение пути к файлу из текстового файла для восстановления

277
William

Я работаю над сценарием корзины, который я могу вызвать, чтобы удалить файл и восстановить файл.

В настоящее время удаление работает нормально и может быть вызвано с использованием подстановочного знака, имени файла (для текущего каталога) или полного пути к файлу. Затем он берет этот файл и сохраняет его в / 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

1 ответ на вопрос

0
Bram

Без более подробной информации о файле журнала трудно дать точный ответ, но вот несколько советов.

Используйте, grepчтобы выбрать правильную строку из журнала. Удостоверьтесь, что команда достаточно конкретна, чтобы получить ровно один результат, привязав поиск, используя такие вещи, как начало строки ( ^) или сопоставляя любые разделители, которые вы используете в своем журнале.

Используйте awkили sedдля чтения пути из строки, которую grepвернула команда. Снова убедитесь, что вы получили полный путь и только те элементы пути, которые вам нужны. (Остерегайтесь пробелов и т. Д.)

При повторном указании цели для восстановления обязательно следите за пробелами и другими символами, которые могут испортить mvкоманду, правильно указав путь. Чтобы избежать проблем с тире в имени файла, вы можете добавить --после любых параметров, которые вы хотите передать в mvкоманду. --указывает конец параметров для большинства команд.

Некоторые дополнительные мысли:

  • Если вы поместите все удаленные файлы в том же каталоге, находка не требуется вы можете просто mvиз /root/Dustbinв исходное местоположение
  • Однако, если вы поместите все файлы без переименования в один и тот же каталог, вы можете перезаписать файлы в своей корзине
  • добавить достаточную обработку ошибок в сценариях удаления и восстановления
  • не полагайтесь на такой механизм для важных файлов! Если вам нужно быть уверенным, что вы можете восстановить определенный файл, вам нужно убедиться, что у вас есть подходящая резервная копия и что вы можете восстановить ее.

Похожие вопросы