====== tar ====== ===== 機能 ===== 複数のファイルをひとつのファイルにまとめることをアーカイブといいます。 tarコマンドは、指定したファイルや指定したディレクトリ以下のツリーを、テープなどのメディアに アーカイブしたり、アーカイブデータを展開するコマンドです。 ▼dumpコマンドとの使い分け dumpコマンドがファイルシステム単位でバックアップをとるのに対し、tarコマンドは 任意のディレクトリ以下をアーカイブできるので、システム全体のバックアップは dumpコマンドで、それ以外のバックアップはtarコマンドで、といった使い分けができます。 ===== 構文 ===== tar [オプション] [ファイル名] === オプション === ^オプション^ 意味 ^ |c|アーカイブファイルを新規に作成する| |f|指定されたファイルにアーカイブデータを出力する| |t|アーカイブファイルの内容を表示する| |v|ファイル名のほかにタイムスタンプやアクセス権などの詳細な情報を表示する| |x|アーカイブファイルからファイルを取り出す| |z|アーカイブファイルをgzipで圧縮する(FreeBSD・Linux)| |j|bzip2を通して処理を行う | |X FILE|FILEに記述されたファイル(フォルダ)を除外する。| |C|指定したディレクトリにファイルを展開する| ===== コマンド例 ===== ==== /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.html === jogaiとうファイルをに除外したいフォルダ名を記述しておく。 === $ echo b > jogai $ echo c >> jogai $ cat jogai b c === jogaiファイルで指定したフォルダを除いて圧縮できる。 === $ 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 ==== 指定したディレクトリに展開する ==== hogeディレクトリに展開する場合 $ mkdir hoge $ tar zcvfC foo.tar.gz ./hoge ==== tar でディレクトリ丸ごとコピー ==== 10.10.10.10の/mnt/ を 10.10.10.20の/mnt/ に丸ごとコピー ssh root@10.10.10.10 tar -C /mnt/ --sparse --one-file-system -zcp --numeric-owner --xattrs . | ssh root@10.10.10.20 tar -xzp -C /mnt/ ==== tar で丸ごとバックアップ ==== /mnt/ディレクトリを丸ごと 10.10.10.30にtarで固めてバックアップ tar -C /mnt/ --sparse --one-file-system -zcp --numeric-owner --xattrs . | ssh root@10.10.10.30 "cat > /backup/backup.tar.gz" {{tag>Unixコマンド 圧縮・復元・パックアップ tar}}