bash script - tar Não é possível stat: Nenhum arquivo ou diretório, saindo com status de falha devido a erros anteriores

0

Estou tentando um script simples para fazer backup dos meus arquivos de origem do diretório raiz do meu site para o diretório /home/backups/files .

script2.sh

#!/bin/bash
#START
TIME='date +%b-%d-%y'
FILENAME=backup-$TIME.tar.gz
SRCDIR="var/www/html/My_Site"
DESDIR="/home/backups/files"
tar cpzfP $DESDIR/$FILENAME $SRCDIR
#END

Erro:

tar: /var/www/html/My_Site\r: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
  1. Cruzei a caixa de seleção para os espaços em branco em cada linha de código, não há nenhuma.

  2. Cruzou a permissão de pasta para o SRC e o DES, seu 0777.

Eu não tenho ideia do porquê Cannot stat: No such file or directory .

    
por Sushivam 28.11.2016 / 08:43

2 respostas

1

Parece-me que o seu script tem retornos de linha do Windows, que estão causando a falha. A pista para isso é o \r no final do caminho na variável SRCDIR, que é mostrada no código de erro como /var/www/html/My_Site\r . Obviamente, esse caminho não existe com o \r adicionado no final.

Aqui está um comando sed que você pode executar no seu script para remover os retornos de carro, ele fará um backup do script original, chamado script2.sh.bak .

sed -i.bak 's/\r//g' script2.sh

O script deve funcionar corretamente agora. Você pode excluir a versão de backup assim que verificar isso.

Outro método para se livrar desses retornos de carro indesejados seria usar tr -d '\r' script2.sh , mas você precisaria direcionar a saída para um novo arquivo e copiá-lo no lugar do antigo.

Uma outra coisa que seria útil seria garantir que você cite suas variáveis ao usá-las em seu script. É uma boa prática entrar.

    
por Arronical 28.11.2016 / 11:48
2

Você tem direitos para escrever na pasta DESDIR?

Além disso, para evitar "tar: Removendo o início '/' dos nomes de membros", tente isto:

tar cpzfP $DESDIR/$FILENAME $SRCDIR

Eu não sei porque, mas isso funciona para mim.

    
por Maksim Garkavenkov 28.11.2016 / 09:38