Sunday, November 30, 2008

Unix Command tar

The tar Command



The tar (i.e., tape archive) command is used to convert a group of files into an archive.

An archive is a single file that contains any number of individual files plus information to allow them to be restored to their original form by one or more extraction programs. Archives are convenient for storing files as well as for for transmitting data and distributing programs. Moreover, they are very easy to work with, often much more so than dealing with large numbers of individual files.

Although tar was originally designed for backups on magnetic tape, it can now be used to create archive files anywhere on a filesystem. Archives that have been created with tar are commonly referred to as tarballs.

Unlike some other archiving programs, and consistent with the Unix philosophy that each individual program should be designed to do only one thing but do it well, tar does not perform compression. However, it is very easy to compress archives created with tar by using specialized compression utilities.

tar's basic syntax is

tar option(s) archive_name file_name(s)

tar has numerous options, many of which are not frequently used. Unlike many commands, tar requires the use of at least one option, and usually two or more are necessary.

tar files are created by using both the -c and -f options. The former instructs tar to create an archive and the latter indicates that the next argument (i.e., piece of input data in a command) will be the name of the new archive file. Thus, for example, the following would create an archive file called file.tar from the three files named file1, file2 and file3 that are located in the current directory (i.e., the directory in which the user is currently working):

tar -cf file.tar file1 file2 file3

It it not absolutely necessary that the new file have the .tar extension; however, the use of this extension can be is very convenient because it allows the type of file to be visually identified. It is necessary, however, that the -f option be the final option in a sequence of contiguous, single-letter options; otherwise, the system will become confused as to the desired name for the new file and will use the next option in the sequence as the name.

The -v (i.e., verbose) option is commonly used together with the -c and -f options in order to display a list of the files that are included in the archive. In such case, the above example would become

tar -cvf file.tar file1 file2 file3

tar can also be used to make archives from the contents of one or more directories. The result is recursive; that is, it includes all objects (e.g., directories and files) within each level of directories. For example, the contents of two directories named dir1 and dir2 could be archived into a file named dir.tar with the following:

tar -cvf dir.tar dir1 dir2

It is often convenient to use tar with a wildcard (i.e., a character which can represent some specific class of characters or sequence of characters). The following example uses the star wildcard (i.e., an asterisk), which represents any character or sequence of characters, to create an archive of every object in the current directory:

tar -cf *

By default, tar creates an archive of copies of the original files and/or directories, and the originals are retained. However, they can be removed when using tar by adding the --remove-files option.

As it has no compression and decompression capabilities of its own, tar is commonly used in combination with an external compression utility. A very handy feature of the GNU version (which is standard on Linux) is the availability of options that will cause standard compression programs to compress a new archive file as soon as it has been created. They are -j (for bzip2), -z (for gzip) and -Z (for compress). Thus, for example, the following would create an archive named files.tar.bz2 of the files file4, file5 and file6 that is compressed using bzip2:

tar -cvjf files.tar.bz2 file4 file5 file6

tar can also be used for unpacking tar files. However, before doing this, there are several steps that should be taken. One is to confirm that sufficient space is available on the hard disk drive (HDD). Another is to move to an empty directory (which usually involves creating one with an appropriate name) to prevent the reconstituted files from cluttering up the current directory and overwriting any files or directories with same names that are in it. In addition, if the archive has been compressed, it must first be decompressed using the appropriate decompression program (which can usually be determined by the filename extension).

In order to unpack a tar file, the -x (for extract) and -f options are required. It is also common to add the -v option to provide a running listing of the files being unpacked. Thus, for example, to unpack the archive file.tar created in a previous example the following would be used:

tar -xvf file.tar

Just as options are available to allow three compression programs to automatically compress newly created tar files, the same options can be used to have the compression programs automatically decompress tar files prior to extraction. Thus, for instance, the following would decompress and extract the contents of the compressed archive files.tar.bz2 that was created in an above example:

tar -xjvf files.tar.bz2

Files can be added to an existing archive using the -r option. As is always the case with tar, it is also necessary to use the -f option to indicate that the following string (i.e., sequence of characters) is the name of the archive. For example, the following would append a file named file7 to file.tar:

tar -rf file.tar file7

The --delete option allows specified files to be completely removed from a tar file (except when the tar file is on magnetic tape). However, this is different from an extraction, as copies of the removed files are not made and placed in the current directory. Thus, for example, the files file1 and file2 can be removed from file.tar with the following:

tar -f file.tar --delete file1 file2

The -t option tells tar to list the contents of an uncompressed archive without performing an extraction. Thus, the following would list the contents of file.tar:

tar -tf file.tar

One of the very few options that can be used alone with tar is --help, which provides a relatively compact listing of the numerous options that are available. Another is --version, which shows the version number for the installed tar program as well as its copyright information.

การใช้งานคำสั่ง tar เป็นคำสั่งพื้นฐานมากๆ บนระบบ Linux หรือ Unix โดยผู้ใช้สามารถใช้งานคำสั่งนี้ผ่าน Terminal)สำหรับผู้ที่ชอบการบีบอัดไฟล์เื่พื่อ ง่ายต่อการจัดเก็บ

ผมคิดว่าพวกเราซึ่งเป็นนักพัฒนาน่าจะได้ใช้มันบ่อยมากๆ โดยเฉพาะตอน backup ลักษณะการทำงานของมันคล้ายกับพวก zip ไฟล์ที่เรารู้จักกันดี คำสั่ง tar ก็ทำงานคล้ายๆกับ zip ครับ ต่างกันนิดหน่อยตรงนี้ tar ไม่ได้ย่อ file มันแค่เอาไฟล์มาต่อๆ กันแล้วรวมเป็นไฟล์เดียว

การใช้งานก็ง่ายๆ ในกรณีที่เรามี folder ชื่อ Tools แล้วเราต้องการรวม file ทั้งหมดใน Tools รวมถึงตัว folder Tools ด้วย ก็ให้ใช้คำสั่งว่า

tar -cvf tools.tar Tools

  • c คือ ให้สร้าง file tar ขึ้นมา (create)
  • v คือ ให้แสดงชื่อด้วย
  • f tools.tar คือ ตำแหน่งที่เราต้องการให้สร้างไฟล์ (file) ขึ้นมา
  • Tools ก็คือ Folder ที่เป็นเป้าหมายในการรวมของเรา

หลังจากได้ tar มาแล้ว ถ้าต้องการแตกมันออกให้กลับมาเป็น Tools ก็ใช้คำสั่ง

tar -xvf xxx.tar

x คือ คำสั่งให้แตกไฟล์ออกมา (extract)

ในกรณีที่เราต้องการให้มันย่อไฟล์ด้วย แบบที่ zip ทำได้ ก็ให้เราเพิ่มตัว z ลงไป เช่น

tar -zcvf xxx.tar.gz Tools

ปกติเวลาที่เรามีการย่อไฟล์ด้วย เราจะตั้งนามสกุลให้เป็น tar.gz โดยตัว gz ย่อมาจาก gzip และ gzip ย่อมาจาก GNU Zip

เวลาจะแตกมันออกมาก็ใช้คำสั่ง

tar -zxvf tools.tar.gz



No comments: