Shellscript - Lendo o caminho do arquivo de texto para restaurar

1

Estou trabalhando em um script da Lixeira que posso chamar para excluir um arquivo e restaurar um arquivo.

A exclusão atualmente funciona bem e pode ser chamada usando um caractere curinga, um nome de arquivo (para o diretório atual) ou um caminho de arquivo completo. Em seguida, pega esse arquivo e o armazena em / root / Dustbin /...

# del example.txt

Enquanto isso, também armazena o caminho de arquivo original em um arquivo log.txt no Dustbin.

Agora, minha pergunta é: como eu iria restaurar o arquivo para o local original (que está armazenado no arquivo log.txt)?

Meu código para restauração é atualmente:

#!/bin/sh

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

#End of script

No momento, isso restaura o arquivo especificado do Dustbin para a minha localização atual usando

# restore example.txt

Obrigado

    
por William 21.11.2016 / 12:42

1 resposta

0

Sem mais detalhes sobre o arquivo de log, é difícil dar uma resposta exata, mas aqui estão algumas dicas.

Use grep para selecionar a linha correta do log. Certifique-se de tornar o comando específico o suficiente para obter exatamente um resultado ancorando a pesquisa usando coisas como o início de uma linha ( ^ ) ou combinando os delimitadores que você usa em seu log.

Use awk ou sed para ler o caminho da linha que o comando grep retornou. Novamente, certifique-se de obter o caminho completo e apenas os elementos do caminho que você precisa. (Cuidado com os espaços em branco, etc.)

Ao especificar o alvo a ser restaurado novamente, tenha cuidado com espaços em branco e outros caracteres que possam atrapalhar o comando mv citando corretamente o caminho. Para evitar problemas com traços no nome do arquivo, você pode adicionar -- após qualquer opção que desejar passar para o comando mv . -- indica o final dos parâmetros para a maioria dos comandos.

Algumas ideias adicionais:

  • Se você colocar todos os arquivos excluídos no mesmo diretório, não será necessário encontrar, basta mv de /root/Dustbin para o local original
  • No entanto, se você colocar todos os arquivos sem renomeá-los no mesmo diretório, poderá acabar substituindo os arquivos em seu Dustbin
  • adicione tratamento de erros suficiente nos scripts de exclusão e restauração
  • não confie em um mecanismo como esse para arquivos importantes! Se você precisa ter certeza de que pode restaurar um arquivo específico, é necessário certificar-se de ter um backup adequado disponível e de ter certeza de poder restaurá-lo
por 22.11.2016 / 17:36