cpio and directory owner preservation behaviour

David Magda dmagda at ee.ryerson.ca
Thu Sep 22 16:59:12 UTC 2011


On Thu, September 22, 2011 10:54, Olivier Cochard-Labbé wrote:
[...]
> [root at R3]/#(cd /usr/local/etc; find . -name ripd.conf -type f | cpio
> -dumpv /tmp/)
>
> The file owner and permission for ripd.conf is keept:
> [root at R3]/#ls -alh /tmp/quagga/ripd.conf
> -rw-------  1 quagga  quagga   134B Sep 22 15:28 /tmp/quagga/ripd.conf
>
> But not the directory owner that is changed to root:wheel
> [root at R3]/#ls -alh /tmp | grep quagga
> drwxr-xr-x   2 root  wheel   512B Sep 22 16:41 quagga
>
> Is a cpio bug ?

No it is not a bug, because the find(1) command will only print 
"quagga/ripd.conf" to its output, and not "quagga/" as well. Since cpio(1)
only receives "quagga/ripd.conf", it will only put the information for
that item in the archive stream.

Try the following command:

   # (cd /usr/local/etc; find quagga | cpio -dumpv /tmp/)

instead. This should grab quagga/ itself, in addition to its contents in
the archive stream.

If you want to know which items (files, directories, other) that cpio(1)
grab information on just run the find(1) without piping its output
anywhere. If you don't see the item of interest on a line of its own,
cpio(1) will not grab its metadata.




More information about the freebsd-stable mailing list