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

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

tar コマンドを使用します。

tar -cvf protTests.tar protTests/*

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

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

答え1

tar内部のすべてのファイルのリストを提供するだけですprotTests(シンボリックリンクを除く)。

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

ところで、既存のコマンドは次のようになります。

tar -cvf protTests.tar protTests/*

保管しないみんなprotTests、名前が始まらないファイル.(隠しファイル)のみを保持します。 glob*演算子は、名前で始まるファイルをスキップします.。また、このコマンドには、protTestsファイル数が多い場合(数千以上)、コマンドラインprotTests/*に合わせるにはあまりにも多くのパラメータに拡張される可能性があるという問題があります。

このような単純なコマンドでは、次の問題は発生しません。

tar -cvf protTests.tar protTests

答え2

マイタールの実装最良の方法です

star -cv -f out.tar -find protTests ! -type l

関連情報