空のtarアーカイブを取得する方法は?


24

私はすべてが.specファイルに含まれているRPMを作成しています(尋ねないでください:-)。rpmbuildには「ソース」ファイルが必要なので、空のtarファイルを作成しようとしていました。ただし、ファイル名を指定しない場合、tarは次のように文句を言います。

tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.

本当に空のtarファイルを作成するにはどうすればよいですか?


ここで以前に回答されました: superuser.com/questions/133186/…–
リューク

3
実際、@ Rhuyuk、そうではありません。その投稿は、ファイル名をリストするのを忘れた人であり、その答えは、彼らが別の引数を渡す必要があることに気づき、空ではないアーカイブをもたらしました。私はその質問のタイトルを変更して、この質問、作成された理由はここにありDOESその質問のタイトルが求めていたものを答えを。
ショーンレイフシュナイダー

回答:


24

以下を使用して、GNUおよびBSD tarに空のアーカイブを作成させることができます。

tar -cf tarfilename.tar -T /dev/null

ya、 'f'オプションはファイル名を指定するため、最後でなければなりません。Tという名前のアーカイブを作成しますが、とにかくtarfilename.tarファイルがないとエラーになります。
lornix

1
空のtarを作成する1つの理由:スクリプト化されたtarの作成。ステップ1:tarを作成します。ステップ2:ファイルを1つずつ追加します。「最初にファイルを作成し、次に作成してから追加する」という方法でこれを行うことができますが、それはそれほどスムーズではありません。
12

4
@dpk:あなたが言っていることを理解しているなら、なぜ単にappendを使わないのですか?Appendはtarファイルを作成します(まだ存在しない場合)。最初のファイルであるかどうかを確認する必要はありません。追加するだけで、tarが作成する最初のファイルであるかどうかを確認できます。
ショーンレイフシュナイダー

1
@SeanReifschneiderそれはうまくいくように見えます。いいね
DPK

1
@SeanReifschneider:まだディスクにない場合、追加モードが最初のファイルのアーカイブを作成するというヒントに対して+1。スクリプトで追加モードでtarを実行するためにfindコマンドを使用しているため、事前にアーカイブファイルを作成する必要はありませんでした。
-GuruM

8

BSD: tar cvf empty.tar --from-file /dev/null

GNU(Linux): tar cvf empty.tar --files-from /dev/null

Solaris: tar cvf empty.tar -I /dev/null


最後に、Solarisで動作するもの!!
どうも

4

空のtarファイルは、10240 NULバイトのファイルだけです。したがって、空のtarファイルを作成するには、必要はありませんがtar、代わりに次のいずれかを使用できます。

$ head --bytes=10240 /dev/zero > empty.tar
$ truncate --size=10240 empty.tar
$ fallocate --length=10240 empty.tar
$ dd if=/dev/zero bs=10240 count=1 iflag=fullblock > empty.tar
$ dd if=/dev/zero bs=1 count=10240 > empty.tar

@KamilMaciorowski ddの使用法についてのヒントをありがとう!新しいことを学びました!正しい質問への回答について:タイトルは確かに「tarを強制する方法」を尋ねますが、質問テキストを読むと、OPが空のtarファイルを実際に必要としていることが明らかになります。
ジョシュ

質問を編集しました。
カミルマシオロウスキ

3

単一のファイルをアーカイブしてからアーカイブからファイルを削除することで、空のアーカイブを作成できました。

tar cf empty.tar somefile                   # creates archive
tar --delete -f empty.tar somefile          # remove the file
tar tf empty.tar                            # list contents of archive

これは私のために動作します。


2
GNU tarを使用すると、すべてのNUL文字の予想される10Kファイルが生成されることを確認できます。
ショーンレイフシュナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.