web-dev-qa-db-ja.com

tarはパターンではなく単一のファイル/ディレクトリを除外します

サーバーの毎日のバックアップを作成するためにtarを使用していて、/ procおよび/ sysシステムディレクトリのバックアップを避けたいが、ファイルツリーの他の場所にある「proc」または「sys」という名前のディレクトリを除外しない。

たとえば、次のディレクトリツリーがある場合( "bla"は通常のファイルです):

# find
.
./sys
./sys/bla
./foo
./foo/sys
./foo/sys/bla

./sysを除外したいのですがnot./foo/sysです。

それを行う--excludeパターンが見つからないようです...

# tar cvf /dev/null * --exclude=sys
foo/

または...

# tar cvf /dev/null * --exclude=/sys
foo/
foo/sys/
foo/sys/bla
sys/
sys/bla

何か案は? (Linux Debian 6)

21
Udo G

除外パターンへの絶対パスを指定できます。これにより、他のsysまたはprocディレクトリがアーカイブされます。

tar --exclude=/sys --exclude=/proc /
11
CharlesB

この場合、次のように使用できます。

--anchored --exclude=sys/\*

tarが先頭の「/」を表示しない場合、フィルターに問題があるためです。

6
pjv

Tarを使用すると、スキップする必要のある任意のディレクトリにタグファイルを配置して、ディレクトリを除外できます。

タグファイルを作成し、

touch /sys/.exclude_from_backup
touch /proc/.exclude_from_backup

そして、

tar -czf backup.tar.gz --exclude-tag-all=.exclude_from_backup *
5