tar comando gera erro no shell script

7

Estou tentando criar uma tarball em um script de shell (ativei set -x ), mas recebo o seguinte erro:

+ cd /home5/mysite/public_html
+ TAR_DUMP=gypo_2012-02-18-03:51:15.tar.gz
+ echo 'Tar name: gypo_2012-02-18-03:51:15.tar.gz'
Tar name: gypo_2012-02-18-03:51:15.tar.gz
+ tar -cvzf gypo_2012-02-18-03:51:15.tar.gz gypo
...
tar: gypo_2012-02-18-03\:44\:04.tar.gz: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
...

O script é:

NOW=$(date +"%Y-%m-%d-%T")

# TAR

cd $HOME/public_html
TAR_DUMP="gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
# mv -t $DEST $TAR_DUMP

Por que o tar está gerando esse erro e como posso resolvê-lo?

    
por Jérôme Verstrynge 18.02.2012 / 11:57

1 resposta

7

O : no nome do arquivo está confuso tar . Pelo menos para a versão coreutils de tar , a opção --file pode receber um argumento do formulário:

hostname:/remote/file/name

, então estou supondo que tar está tentando interpretar esse nome de arquivo de uma maneira que não é o que você quis dizer.

Prefixar o nome do arquivo com ./ (ou especificar um caminho completo) deve resolver seu problema.

TAR_DUMP="./gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo

Outra correção seria adicionar a opção --force-local .

--force-local

Forces 'tar' to interpret the filename given to --file as a local file, even if it looks like a remote tape drive name.

    
por 18.02.2012 / 12:16