Table of Contents

Linux Commands#File, Directory

tar - How to use tar command in Linux

The GNU version of the tar archiving utility



Option

Main operation mode:
       -c, --create
              create a new archive

       -f, --file=ARCHIVE
              use archive file or device ARCHIVE

       -v, --verbose
              verbosely list files processed

       -x, --extract, --get
              extract files from an archive

       -z, --gzip
              filter the archive through gzip

       -t, --list
              list the contents of an archive

       -j, --bzip2
              filter the archive through bzip2

Common options:
       -C, --directory=DIR
              change to directory DIR


Operation modifiers:
       --no-same-owner
              extract files as yourself (default for ordinary users)


Example

tar

## Create
tar -cvf test.tar Dir1 Dir2   <- Create, Verbose, File

## Test
tar -tvf test.tar   <- Test, Verbose, File

## eXtract
tar -xvf test.tar   <- eXtract, Verbose, File


tar.gz、tgz

## Create
tar zcvf test.tar.gz DIR1 DIR2
tar zcvf testdir_back.tar.gz -C /etc testdir     # cd /etc; tar zcvf testdir_back.tar.gz testdir

## Test
tar ztvf test.tar.gz
zcat FILE.tar.gz | tar tvf -

## eXtract
tar zxvf test.tar.gz
tar zxvf user01.tar.gz  -C /home     # cd /home; tar zxvf user01.tar.gz
tar --no-same-owner zxvf test.tar.gz   <- with root user owner


tar.bz2 tbz2

## Create
tar jcvf test.tar.bz2 DIR1 DIR2

## Test
tar jtvf test.tar.bz2   <- test

## eXtract
tar jxvf test.tar.bz2


Tips

Checking Full Path

Good
# useradd user01
# cd /home
# tar zcvf /tmp/`hostname`_user01.tar.gz user01
user01/
user01/.bash_logout
user01/.bash_profile
user01/.bashrc
#
# cd /tmp/
# tar ztvf centos7_user01.tar.gz
drwx------ user01/user01     0 2018-08-08 01:11 user01/
-rw-r--r-- user01/user01    18 2017-09-07 01:25 user01/.bash_logout
-rw-r--r-- user01/user01   193 2017-09-07 01:25 user01/.bash_profile
-rw-r--r-- user01/user01   231 2017-09-07 01:25 user01/.bashrc
#
# mkdir /home2
# tar zxvf centos7_user01.tar.gz -C /home2   # cd /home2; tar zxvf centos7_user01.tar.gz
# rm -rf /home2
No Good
# cd /tmp/
# tar zcvf user01.tar.gz /home/user01
tar: Removing leading `/' from member names
/home/user01/
/home/user01/.bash_logout
/home/user01/.bash_profile
/home/user01/.bashrc
#
# tar ztvf user01.tar.gz
drwx------ user01/user01     0 2018-08-08 01:11 home/user01/
-rw-r--r-- user01/user01    18 2017-09-07 01:25 home/user01/.bash_logout
-rw-r--r-- user01/user01   193 2017-09-07 01:25 home/user01/.bash_profile
-rw-r--r-- user01/user01   231 2017-09-07 01:25 home/user01/.bashrc


--exclude option

# mkdir test
# mkdir test/test1
# mkdir test/test2
# mkdir test/test3
# mkdir test/test4
# mkdir test/test4/test1

# tree test
test
|-- test1
|-- test2
|-- test3
`-- test4
    `-- test1

# tar zcvf test1.tar.gz --exclude test/test1  --exclude test/test2  test
test/
test/test4/
test/test4/test1/
test/test3/


# vi test.conf
test/test1
test/test2

# tar zcvf test2.tar.gz -X test.conf test
test/
test/test4/
test/test4/test1/
test/test3/