Uso do mkdir

1. Uso do mkdir

Cleve V
Vicasonic

(usa Ubuntu)

Enviado em 29/05/2019 - 00:23h

Boa noite,
Estou tentando criar um script de backup e quando executo apresenta a seguinte mensagem...

>> cp: o alvo "/opt/sistema/arquivos.exe" não é um diretório.

acredito que o erro seja quando tento usar o mkdir, estou fazendo da seguinte maneira

>> BackupExec=$(mkdir /opt/backup_exec_`date +%d-%m-%y`)

>> cp -rv /opt/sistema/*.exe $BackupExec




  


2. Re: Uso do mkdir

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/05/2019 - 08:19h

Vicasonic escreveu:

Boa noite,
Estou tentando criar um script de backup e quando executo apresenta a seguinte mensagem...

>> cp: o alvo "/opt/sistema/arquivos.exe" não é um diretório.


A mensagem significa que o comando cp está interpretando /opt/sistema/arquivos.exe como destino da cópia, não como um dos elementos a serem copiados. Como /opt/sistema/arquivos.exe é um arquivo, e a cópia provavelmente tem mais de três arquivos, então o destino teria de ser um diretório.

acredito que o erro seja quando tento usar o mkdir, estou fazendo da seguinte maneira

>> BackupExec=$(mkdir /opt/backup_exec_`date +%d-%m-%y`)


Sim, o problema está exatamente aí. Do jeito como você fez, a variável BackupExec recebe como valor aquilo que o comando mkdir tiver imprimido. Como esse comando não imprime nada, a variável fica vazia, ...

>> cp -rv /opt/sistema/*.exe $BackupExec


... e essa variável vazia, ao ser expandida na linha de comando do cp, é simplesmente ignorada, como se não existisse, de modo que o último argumento da linha de comando, que deveria ser o destino da cópia, acaba sendo o arquivo que resultar por último da expansão de /opt/sistema/*.exe.

Você até que deu sorte: se fossem apenas dois arquivos, o cp interpretaria isso como uma cópia de arquivos, e sobrescreveria o segundo com o conteúdo do primeiro.


Como corrigir?

Provavelmente você quis dizer o seguinte.
BackupExec="/opt/backup_exec_$(`date +%d-%m-%y`)"
mkdir -p "$BackupExec" && cp -rv /opt/sistema/*.exe "$BackupExec"


Note o uso das aspas ao invocar mkdir e cp. Desse jeito, mesmo que a varável estivesse vazia, ela ainda provocaria a presença de um argumento ali. No caso do cp, isso protegeria você de, se houver apenas dois arquivos com sufixo “.exe” no diretório, sobrescrever o segundo com o conteúdo do primeiro.

O uso do encadeamento com && implica que a cópia só vai acontecer se o diretório destino tiver sido criado com sucesso.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Uso do mkdir

Cleve V
Vicasonic

(usa Ubuntu)

Enviado em 03/06/2019 - 20:58h

Perfeito, meu amigo paulo1205!! Uma verdadeira aula.
Fiz da maneira descrita e funcionou muito bem. A minha
duvida agora, é saber como finalizo a pergunta e escolho como a melhor?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts