Unixコマンド/tar
tar †
機能 †
複数のファイルをひとつのファイルにまとめることをアーカイブといいます。
tarコマンドは、指定したファイルや指定したディレクトリ以下のツリーを、テープなどのメディアに
アーカイブしたり、アーカイブデータを展開するコマンドです。
▼dumpコマンドとの使い分け
dumpコマンドがファイルシステム単位でバックアップをとるのに対し、tarコマンドは
任意のディレクトリ以下をアーカイブできるので、システム全体のバックアップは
dumpコマンドで、それ以外のバックアップはtarコマンドで、といった使い分けができます。
構文 †
tar [オプション] [ファイル名]
オプション †
c アーカイブファイルを新規に作成する f 指定されたファイルにアーカイブデータを出力する t アーカイブファイルの内容を表示する v ファイル名のほかにタイムスタンプやアクセス権などの詳細な情報を表示する x アーカイブファイルからファイルを取り出す z アーカイブファイルをgzipで圧縮する(FreeBSD・Linux) j bzip2を通して処理を行う X FILE FILEに記述されたファイル(フォルダ)を除外する。
コマンド例 †
/etcディレクトリ以下のファイルをフロッピーディスク(/dev/fd0)にアーカイブする †
# cd /etc # tar cf /dev/fd0 ./*
アーカイブ内のファイル名を表示する †
# tar tf /dev/fd0 |head etc/X11/ etc/aliases etc/amd.map etc/antivir.conf etc/apmd.conf etc/auth.conf etc/avguard.conf etc/crontab etc/csh.cshrc etc/csh.login
アーカイブ内のファイル名とファイル属性を表示する †
root@vaio# tar tfv /dev/fd0 |head drwxr-xr-x root/wheel 0 5 26 06:27 2004 etc/X11/ lrwxrwxrwx root/wheel 0 9 21 23:27 2004 etc/aliases -> mail/aliases -rw-r--r-- root/wheel 208 5 26 06:28 2004 etc/amd.map -rw-rw-r-- root/antivir 3623 11 10 07:38 2004 etc/antivir.conf -rw-r--r-- root/wheel 1167 5 26 06:28 2004 etc/apmd.conf -rw-r--r-- root/wheel 272 5 26 06:28 2004 etc/auth.conf -rw-rw-r-- root/antivir 3730 11 10 07:31 2004 etc/avguard.conf -rw-r--r-- root/wheel 637 5 26 06:28 2004 etc/crontab -rw-r--r-- root/wheel 108 5 26 06:28 2004 etc/csh.cshrc -rw-r--r-- root/wheel 486 5 26 06:28 2004 etc/csh.login
アーカイブデータからファイルを取り出す †
# tar xf /dev/fd0
特定フォルダを除外する †
workフォルダにa,b,cというフォルダがあるとする
$ find work work work/a work/a/a.html work/b work/b/b.html work/c work/c/c.htmljogaiとうファイルをに除外したいフォルダ名を記述しておく。
$ echo b > jogai $ echo c >> jogai $ cat jogai b cjogaiファイルで指定したフォルダを除いて圧縮できる。
$ tar zcvXf jogai backup.tar.gz x work/ work/a/ work/a/a.html
bzip2を通して、tar,gz2で圧縮・解凍 †
- 圧縮
$ tar jcvf work.tar.gz2 work a work a work/sabun.sh a work/test.rb a work/ch_20060317.txt a work/kr_20060317.txt a work/test.rb.bak a work/seek.sh a work/A a work/serverlist.txt a work/B a work/test.txt a work/a.sh a work/sample01.sh a work/test.php- 解凍
$ tar jxvf work.tar.gz2 x work x work/sabun.sh x work/test.rb x work/ch_20060317.txt x work/kr_20060317.txt x work/test.rb.bak x work/seek.sh x work/A x work/serverlist.txt x work/B x work/test.txt x work/a.sh x work/sample01.sh x work/test.php- tar.gzより、tar.gz2の方が圧縮率が高い
$ ls -al drwxr-xr-x 2 matsui Admin 512 8 13 03:36 work/ -rw-r--r-- 1 matsui users 4900 8 16 11:41 work.tar.gz -rw-r--r-- 1 matsui users 4348 8 16 11:40 work.tar.gz2
特定ファイルだけを取り出す †
$ tar zxvf foo.tgz filename