
		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)