web-dev-qa-db-ja.com

Untar、ungz、gz、tar-すべての便利なオプションをどのように覚えていますか?

次の問題を抱えているのは私だけではないと私は確信しています:* nixでファイルを圧縮解除する必要があるたびに、すべてのスイッチを思い出せず、最終的にファイルをグーグルしてしまいます。これを行う。

あなたは良い圧縮チートシートを持っていますか?または、tarのこれらの厄介なスイッチすべてのニーモニックはどうですか?

ここでWikiを作成して、ここでニースチートシートを作成できるようにしています。

ああ、そしてmanページについて:それらが役に立たないことが1つありますか?それはファイルを解凍する方法を理解するためです。

76
deadprogrammer

または、包括的な助けを借りてオプションを補完する高度な補完機能(zshまたはbashの新しいバージョンなど)を備えたシェルを使用するのはどうですか? :))

Tarについて:「qwerty」キーボードを見てください。 「zxcvf」という文字が隣り合っています。 「tar czvf file.tar.gz files」または「tar xzvf file.tar.gz」のいずれかが必要です。

65
ADEpt

Tarオプションの要約

Y'allはこれを編集して難解なスイッチを追加することができますが、基本は次のとおりです。

  • x-ファイルを抽出します
  • c-アーカイブを作成
  • t-ファイルのリスト
  • v-詳細(ファイルを処理しながらリストする)
  • j-bz2圧縮を使用します
  • z-gz圧縮を使用します
  • f-ファイルをディスクに読み書きする

Tar.gzファイルを解凍します:tar zxf tarball.tar.gz

Tar.bz2ファイルを解凍します:tar jxf tarball.tar.bz2

Tar.gzファイルを作成します。tar zcvf tarvall.tar.gz mydir/*

41
Adam Pierce

「unp」と呼ばれる小さなPerlスクリプトがあります。

unp filename.tar.gz

...そしてすべてを抽出します。適切なバイナリがある限り、any圧縮ファイルで動作します。そして、あなたは単に構文やそのがらくたのことを忘れます。 Linuxディストリビューションのリポジトリを確認してください。 (少なくともArch、Debian、Ubuntuでは)そこにあるはずです。

23
Vicent Marti

本当に頻繁に使用することで、(x)データの抽出と(c)データの圧縮を区別します。

抽出するには:

tar xzf data.tgz

圧縮するには:

tar czf data.tgz

さらに、.bashrcにも2つの関数を追加できます。

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

別のニース抽出関数があり、それはあなたの圧縮ファイルの拡張子を検出し、あなたのために仕事をします:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.Zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }
8
Ali Mezgani

tar --helpそしてあなたのチートシートがあります。

5
Jeremy Ruten

Tarオプションを思い出せない場合は、パイプを使用してみてください。

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

置換tar xvtar tvは、tarballのコンテンツを表示するだけです。

個人的には、次のニーモニックを使用しています。

  • 「表を作成」、「抽出」、または「作成」を表すt、x、またはc。
  • vすべてのファイルをリストするため。
  • tar.gz、tar.bz2、またはプレーン.tarの場合は、それぞれz、j、またはnone。
  • ファイル名を指定する場合のfと、stdin/stdoutまたはテープデバイスを使用する場合のデフォルト。

「j」と「bzip2」は互いに関係がないように見えますが、この例外を覚えているのは簡単です。

また、グーグルが「man tar」に取って代わったのも面白いです。

3
Logan

男はあなたの友達です。

man tar

3
madlep

タイプしている間、いつも心の中でコマンドを読みます

冗長Zipファイルを圧縮する

tar cvzf FILE

詳細なZipファイルFILEを抽出します

tar xvzf FILE
2
feeela

私は次のことをします

タールを作成するには:

tar czvf foo.tar.gz <files to be included>

解凍するには:

tar zxvf foo.tar.gz

これらはあなたが心配する必要がある主要なスイッチであるべきです:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

次のようにディレクトリ間でファイルを移動しようとしているときに、tarやuntarのようなより洗練された機能をインラインで実行できます。

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
2
Jauder Ho

最もよく使用される3つの操作

--create-c

新しいtarアーカイブを作成します。

--list-t

アーカイブの内容を一覧表示します。

--extract-x

アーカイブから1つ以上のメンバーを抽出します。


5つの高度なtar操作

--append-r

既存のアーカイブに新しいエントリを追加します。

--update-u

アーカイブメンバーの最新のコピーが存在する場合は、アーカイブの最後に追加します。

--concatenate--catenate-A

1つ以上の既存のアーカイブを別のアーカイブの最後に追加します。

--delete

アーカイブからアイテムを削除します(テープでは機能しません)。

--compare--diff-d

アーカイブメンバーをファイルシステムの対応するメンバーと比較します。


2
Lazer

私が使う時間の90%

tar -xvf file.*  

x:抽出
v:冗長にする(オプション)
f:入力ファイル(tar、gz、bzip2など...)

簡単でしょ? :)
Filerollerを使用するか、コンソールにいない場合はArkを使用します。

1
ramayac

私は atool プロジェクトの一部であるaunpackというPerlスクリプトを長年使用しています。したがって、単にaunpack foo.{Zip/tar.gz/tar.bz2}を実行すると、ファイル拡張子に基づいて正しい処理が行われます。

aunpackのもう1つの利点は、現在のディレクトリを多数のファイルで汚染しないことです。サブディレクトリにない20個のファイルがfoo.Zipにあるとします。これらのファイルを現在のディレクトリに生成する代わりに、aunpackfooサブディレクトリを作成し、そこにすべてのファイルを配置します。

1
Dave Dribin

あなたに必要なのは tar x(標準入力から抽出)、tar c(tarからstdout)、gzip -c(標準入力から標準出力へのgzip; -1から-9圧縮レベル。同じことがbzip2)およびgunzip -c(stdinからstdoutへのgunzip)-その他はすべてパイプです。

Tarおよびgzipするには:

$ tar c * | gzip -c > out.tar.gz

Gzipを解凍してuntarするには

$ gunzip -c < out.tar.gz | tar x

甘いプログレスバーが必要な場合は、 pv を使用します。これはcatに似ていますが、プログレスバーを表示します。

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%
1
porty

いくつかの文字だけでなく、あなたが望むものを考えるのは簡単だと思います。

説明のために、file.tar.gzを抽出する方法の例を使用します。

これはtarファイルなので、tarプログラムを使用する必要があります。次に、オプションです。

  1. xは、e x tractにする必要があるためです。
  2. ファイルが.gzで終わる場合はz。 (gzはファイル名のtarの後ろにあります)このオプションはアーカイブをgunzipします。
  3. fはファイルの後にアーカイブ名が続きます。

これは、以下の例で示されています。

tar xzf file.tar.gz
0
Espen

私が覚えている方法は、それが常に「tar XXvf」であり、2つのXが

  • x for e [〜#〜] x [〜#〜] tractまたはc [〜#〜] c [〜#〜] reateおよび
  • z = gzip、j = bzip2(gzipがより一般的であるため、通常はzです。理由は何であれ、j = bzip2が頭に残っているだけです)。

nを圧縮タイプに追加すると、圧縮されているがtarファイルではない場合があります。例えばg n Zipまたはb n Zip2。

どちらかと言えば、2を忘れて「bzip」と入力することもあります。

0
mmacaulay

エイリアスを作成することもできます。次の2行を~/.bash_aliasesファイルに追加するだけです。

alias untar="tar xvf"
alias dotar="tar cvf"

次に、untar foo.tar.gzを使用して抽出し、dotar foo.barを使用して圧縮できます。覚えやすい他のエイリアスを使用できます。

0
foerno

[〜#〜] c [〜#〜] reate [〜#〜] z [〜#〜] ip to [〜#〜] f [ 〜#〜] ilename

tar -czf myfile.tar.gz myfile.sql

e [〜#〜] x [〜#〜] tract [〜#〜] z [〜#〜] ip with [〜#〜] f [〜#〜] ilename

tar -xzf myfile.tar.gz
0
littledynamo