tar command generates error in shell script

6,962

The : in the filename are confusing tar. At least for the coreutils version of tar, the --file switch can take an argument of the form:

hostname:/remote/file/name

so I'm guessing tar is trying to interpret that filename in a manner that is not what you meant.

Prefixing the file name with ./ (or specifying a full path) should solve your problem.

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

Another fix would be to add the --force-local switch.

--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.

Share:
6,962

Related videos on Youtube

palloquin
Author by

palloquin

Updated on September 18, 2022

Comments

  • palloquin
    palloquin over 1 year

    I am trying to create a tar ball in a shell script (I have enabled set -x), but I get the following error:

    + 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
    ...
    

    The script is:

    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
    

    Why is tar generating this error and how can I solve it?