サンソラリスで圧縮タールを作成するにはどうすればよいですか?


11

Sun Solaris OSにログインしています。圧縮されたtarファイルを作成して解凍したい。私はこの通常のUNIXコマンドを試しました:

tar -cvzf file.tar.gz directory1

次のエラーでSun OSでの実行に失敗しています

bash-3.2$ tar -cvzf file.tar.tz directory1
tar: z: unknown function modifier
Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...

2
なぜ通常のUNIXコマンドだと思いますか?
schaiba

UnixとLinuxのツールとGNUのツールの違いを読むのに少し時間をかける必要があると思います。
coteyr

4
彼らがそのzフラグをGNU tar に追加したとき、私たちは人々に論理的に考えてパイプラインを構築する方法を教えるための最も優れた例を失いました...

回答:


27

一時的な中間ファイルの作成を回避するには、このコマンドを使用できます

tar cvf - directory1|gzip -c >file.tar.gz

2
これには、処理の一部が並行して発生する可能性があるという潜在的な利点があります。
-psmears

されるf -必要、またはSolarisんtar出力はデフォルトでstdoutに?
マーク

2
@Mark:マンページによると、「f省略さtarれたTAPE場合、設定されている場合、環境変数で指定されたデバイスが使用されます。それ以外の場合は、で定義されているデフォルト値が使用され/etc/default/tarます。」だから、いや、それがf -必要ないことを安全に想定できるようには見えません。
イルマリカロネン

@Romeo:答えてくれてありがとう。cvfとディレクトリ名の間に「-」が必要な理由を明確にできますか?さらに、Solaris 10、11.4、Linux(RHEL、CentOS、Oracleなど)のいくつかのOSでコマンドを試してみましたが、一貫して動作しました。また、それぞれのtarのマニュアルページも確認しました。なぜ、cvfの前に「-」を付けずにLinuxで上記が機能するのですか。Linuxには "tar -cvf ...."のようなものが必要になると思います。答えてくれてありがとう。
rc1

@ rc1、tar内のダッシュは、出力ファイルをSTDOUTに設定することを意味します。パラメータには、BSDとSYSVの2つのスタイルがあります。そして、(ととCVF前にダッシュO / W)、それらの両方でのLinuxのtar作業
ロメオNinov

10

以下のように見えるのSolarisのは、tar圧縮する方法を知りません。だからそれを手動で行う:

tar -cvf file.tar directory1 && gzip file.tar

-zとにかく、それがGNU tar の切り替えのすべてです。上記のコマンドはを生成しfile.tar.gzます。


これは(中間の非圧縮file.tarアーカイブを保存するのに十分な予備のディスク領域がある限り)機能しますが、不必要に遅くなり、ディスク領域を浪費します。これがロミオ・ニノフの答えよりも望ましい状況は考えられません。
イルマリカロネン

1
@IlmariKaronenも私はできません。私はこれを最初に考えました。
テルドン

2

SUNWgtarインストールされているか確認してください。これはGNUバージョンでtarあり/usr/sfw/bin/gtar、GNUオプションを使用してtarを使用できるようにします。


-1

以下のコマンドを試してください

tar -cvf file.tar directory1 && gzip file.tar

(solarisでファイルを圧縮するには)

gunzip file.tar.gz

(解凍する)



また、ファイルをアーカイブ解除するのではなく、tarファイル全体(ヘッダー内のすべてのバイナリを含む)をターミナルにダンプします。おそらく後でターミナルをリセットする必要があります。
Paul_Pedant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.