Como faço para tar um diretório nomeado pelo meu script?

1

Estou escrevendo um script para tar um diretório e, em seguida, carrego o tarball para o S3. O diretório é nomeado com base em uma data, mês e ano. Aqui está minha tentativa:

 TARNAME='date --date="$(date +%Y-%m-15) -1 months" +' %B-%Y''

 tar cvfz /tmp/$TARNAME.tar.gz  /Drive_E/drive_i_bu/monthly/$TARNAME
 /usr/local/bin/aws s3 mv /tmp/$TARNAME.tar.gz s3://test-roger/

Os trabalhos acima, se eu não estou fazendo a substituição de variáveis. Com a variável, eu recebo: tar: July-2016.tar.gz: Cannot stattar (child): /tmp/: Cannot open: Is a directory

Além disso, o tar parece tentar mergulhar mais fundo no diretório. Alguma ideia? Mais uma vez, o acima funciona sem a substituição de variáveis. Então, o problema não é com a ferramenta AWS CLI.

    
por Roger Creasy 18.08.2016 / 18:44

2 respostas

3

Há um espaço em seu $TARNAME (veja abaixo). Isso faz com que /tmp/ e July-2016.tar.gz sejam tratados como argumentos separados por tar

echo /tmp/$TARNAME.tar.gz
/tmp/ July-2016.tar.gz

Se você se livrar disso, as coisas devem funcionar conforme o esperado. Parece ser causado pelo espaço em

' %B-%Y'
    
por 18.08.2016 / 18:49
-3

Cuide dos espaços em branco:

tar cvfz /tmp/"${TARNAME}".tar.gz /Drive_E/drive_i_bu/monthly/"${TARNAME}" /usr/local/bin/aws s3 mv /tmp/"${TARNAME}.tar.gz" s3://test-roger/

    
por 24.10.2016 / 15:48