web-dev-qa-db-ja.com

tarコマンド-シンボリックリンクをスキップ

私はtarコマンドを次のように使用します:

tar -cvf protTests.tar protTests/*

tarフォルダー内のすべてのファイル、protTests。ただし、これにはフォルダー内のシンボリックリンクが含まれていますが、これは望ましいものではありません。

すべてのシンボリックリンクを除外するコマンドラインオプションはありますか?

13
user93868

これを行うと、tarprotTests内のシンボリックリンク以外のすべてのファイルのリストを提供できます。

find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
  tar --null --files-from - -cvf protTests.tar

ちなみに、既存のコマンド:

tar -cvf protTests.tar protTests/*

allprotTests内のファイルはアーカイブされません。名前が.で始まらないファイル(非表示でないファイル)のみがアーカイブされます。 * glob演算子は、名前が.で始まるファイルを意図的にスキップします。このコマンドには、protTestsに多数のファイル(数千を超える)がある場合、protTests/*がコマンドラインに収まらないほど多くの引数に展開される可能性があるという問題もあります。

このような単純なコマンドでは、これらの問題はどちらも発生しません。

tar -cvf protTests.tar protTests
11
Celada