[Toybox] [PATCH 1/2] tar: don't recurse into excluded directories

William Djupström william at deepztream.com
Tue Jun 9 13:32:28 PDT 2020


On 09/06/2020 8:11 pm, Rob Landley wrote:

>
> On 6/9/20 10:10 AM, William Djupström via Toybox wrote:
>> On 09/06 09:56, Rob Landley wrote:
>>> I applied this locally, but what's a test case?
>>>
>>>    $ mkdir -p boing/subb/ping
>>>    $ tar cvf boing.tar boing --exclude sub
>>>    boing/
>>>    boing/subb/
>>>    boing/subb/ping/
>>>    $ tar tvf boing.tar
>>>    drwxr-xr-x landley/landley   0 2020-06-09 09:50 boing/
>>>    drwxr-xr-x landley/landley   0 2020-06-09 09:50 boing/subb/
>>>    drwxr-xr-x landley/landley   0 2020-06-09 09:50 boing/subb/ping/
>>>    $ tar cvf boing.tar boing --exclude subb
>>>    boing/
>>>    boing/subb/
>>>    boing/subb/ping/
>> --exclude takes in a file containing exclusions
> According to https://www.gnu.org/software/tar/manual/html_node/exclude.html
> that's --exclude-from ?
Crap, yeah that's what I've been talking about all this time, I only use 
-X so I didn't realise
that wasn't --exclude :/
>
> Still with the host tar:
>
>    $ mkdir -p boing/splat/bang
>    $ echo splat > splat.txt
>    $ tar cvf boing.tar boing --exclude splat.txt
>    boing/
>    boing/splat/
>    boing/splat/bang/
>    $ tar tf boing.tar
>    boing/
>    boing/splat/
>    boing/splat/bang/
>
> Hmmm...
>
>    $ tar cvf boing.tar boing --exclude splat.txt
>    boing/
>    boing/splat/
>    boing/splat/bang/
>    $ echo boing/splat > splat.txt
>    $ tar cvf boing.tar boing --exclude splat.txt
>    boing/
>    boing/splat/
>    boing/splat/bang/
>
>    $ echo splat > splat.txt
>    $ tar cvf boing.tar boing --exclude-from splat.txt
>    boing/
>    boing/splat/
>    boing/splat/bang/

host tar requires --exclude-from to be placed before the input files

     $ mkdir -p folder/skip/oof
     $ chmod 000 folder/skip/oof
     $ ./toybox tar -X <(echo skip) -cvf test.tar folder
     folder/
     tar: folder/skip/oof: Permission denied

     $ tar -X <(echo skip) -cvf test.tar folder
     folder/

     $ tar -cvf test.tar folder -X <(echo skip)
     folder/
     folder/skip/
     tar: folder/skip/oof: Cannot open: Permission denied

>
>>    $ mkdir -p skip/dir
>>    $ chmod 000 skip/dir
>>    $ ./toybox tar --exclude <(echo skip) -cf test.tar skip
>>    tar: skip/dir: Permission denied
>>    $ echo $?
>>    1
> That's another example of --exclude failing, which I've provided plenty of. The
> behavior of that command is no different with or without the --exclude argument.
>
> Can you show me an example of --exclude _working_?
>
> Rob
//William


More information about the Toybox mailing list