it-swarm-ja.com

tar-除外は機能しません

Tarを使用してディレクトリをアーカイブし、いくつかのファイルを除外することになっています。いくつかの.Javaファイルと.classファイルを含むディレクトリ$ HOME/Javaがあります。私がやりたいのは、-Xexcludeオプションを使用してすべての.classファイルを除外することです。

Findを使用して除外ファイルを作成しました

$ find $HOME/Java -name "*.class" > Exclude

次に、ディレクトリをアーカイブしようとしました

$ tar -cvfX Java.tar Exclude $HOME/Java

しかし、どういうわけかそれは除外を行いません。 Solarisのtarバージョンは、名前による除外をサポートしていません。

3
user27076
 tar -cvf Java.tar --exclude="*.class" $HOME/Java

manページから:

--exclude pattern

    Do not process files or directories that match the specified pattern.  
    Note that exclusions take precedence over patterns or filenames 
    specified on the command line.
3
miku

あなたの構文は、Solarisバージョンのtarに対して完全に正しいです。実際、私はSolaris8および10でrootおよび非rootユーザーとして試しました。

それがそれを除外しなかったと確信していますか?詳細モードの-vオプションでは、除外されたファイルが引き続きリストされ、最後のフィールドとしてサイズではなく「除外された」と表示されます。

エラーメッセージはありますか?除外ファイルが見つからないか読み取れない場合は、そのように表示されます。

 tar c[[email protected][0-7]][bfk][X...] [blocksize]
     [tarfile] [size] [exclude-file]...
     {file | -I include-file | -C directory file}...
4
TD1

相対パスに注意する必要がある場合は注意してください。

したがって、フルパスファイル名ではなく、Excludeファイルで./fileToExcludeを使用する必要があります。

1
David

Tarには、名前パターンでファイルを除外するオプションがあります。代わりにそれを試してください。

除外ファイルを使用する場合は、パス(つまり、tarが出力するパスとファイル内のパス)が完全に同じであることを確認してください。したがって、「a // b」はコマンドラインの「a/b」と同じですが、tarでは異なります。

1
Aaron Digulla

本当に-Xオプションを使用したい場合は、次のことを試してください。

tar -cvf Java.tar -X Exclude $HOME/Java
1
unbeli