Sample Header Ad - 728x90

How to split tar archive on files matching pattern?

0 votes
0 answers
25 views
Suppose I have a large sample.tar with content: foo/... bar/... baz/... ... How to split in two disjoint tarballs so that one archive will contain files matching the pattern and the other archive rest? **Attempt** Looking at --delete in GNU tar the idea was to make 2 copies and delete corresponding parts. This side works perfectly: tar -vf sample.tar --delete --wildcards 'foo/*' 'bar/*' How to negate the selection? It seems that --delete doesn't play well with --exclude as neither of the following works (removes everything): tar -vf sample.tar --delete --wildcards '*' --exclude='foo/*' --exclude='bar/*' tar -vf sample.tar --delete --wildcards --exclude='foo/*' --exclude='bar/*' '*' **Notes** - I don't want to re-pack the archive in order to preserve all attributes (user IDs, setuid bit, timestamps etc...) - I don't want to use extra tools which are not part of standard distribution (apt install from default repository is ok, compiling from sources no) - I can imagine poor man's approach by listing the content using tar -t ... and generating arguments for negated selection but hope there is a better way - Above experiments done w/ GNU tar 1.34
Asked by user1558113 (36 rep)
Dec 2, 2024, 12:43 AM