BASH copia para outro diretório que não funciona

4

Primeiramente, admito que sou novo em sistemas baseados em UNIX, atualmente estou aprendendo na faculdade.

Estou tentando criar uma função que automatize um backup de um arquivo existente em um diretório existente. No entanto, estou sendo retornado uma mensagem na CLI que cita:

cp: cannot create regular file '../Logs/bashmenu.22:52:28-06/12/2016.sh': No such file or directory

Fiz uma boa quantidade de pesquisa pessoal, mas não consigo encontrar uma solução funcional para o meu problema.

O caminho do diretório para o arquivo que contém a função, o que eu quero fazer o backup é:

/Home/Scripts/bashmenu.sh

O caminho do diretório para o local do qual desejo fazer o backup é:

/Home/Logs/TARGET

Ao fazer backup do arquivo, gostaria que ele fosse marcado com data. Então eu usei algumas variáveis para obter a convenção de nomenclatura para o arquivo quando feito o backup. Eu acredito que isso é o que está causando um problema. Eu não sei se isso causa um problema, mas o arquivo e os diretórios, é tudo em um USB, acabei de criar um caminho de diretório semelhante para ele. / p>

Aqui está parte do meu roteiro, as partes que acredito fazem a diferença:

#### #!/bin/bash
fullname='basename "$0"'
now='date +"%H:%M:%S-%d/%m/%Y"';
backupname="${fullname%.*}"".""$now.sh"
cp -v $fullname ../Logs/$backupname
    
por Jamjar91 07.12.2016 / 00:08

1 resposta

5

O caractere separador de caminho / é estritamente proibido em nomes de arquivos (imagine o inferno que seria desencadeado se não fosse assim!)

Caso contrário ... backticks para substituição de comandos é meio obsoleto, então eu mudei ... E ajustei suas citações um pouco

Se você realmente quiser que o script se copie para o destino ...

#!/bin/bash
fullname=$(basename "$0")
now=$(date +"%H:%M:%S-%d.%m.%Y")
backupname="${fullname%.*}"."$now.sh"
cp -v "$fullname" ../Logs/"$backupname"

Então a função poderia ser algo como

backup() {
fullname=$(basename "$1")
now=$(date +"%H:%M:%S-%d.%m.%Y")
backupname="${fullname%.*}"."$now.sh"
cp -v "$fullname" /path/to/wherever/"$backupname"
}
    
por Zanna 07.12.2016 / 00:32

Tags