s6-linux-utils
Software
skarnet.org
The s6-hiercopy program
s6-hiercopy copies a directory structure recursively.
Interface
s6-hiercopy source destination
- s6-hiercopy recursively copies source to
destination, which is created if it doesn't exist.
The permissions are preserved. The owner and group are preserved
if the user is the superuser.
- It exits 0 on success and 111 on temporary failure.
Notes
Copying files and browsing through directories is one of Unix's
weakest points, and s6-hiercopy is not meant to work around
the problem; it's only a quick hack that I needed to boot my embedded
platform. I originally planned to write the ultimate cp utility,
portable and reliable and featureful and everything - while needing
approximately a hundred times less resources than GNU cp does,
of course. But I eventually dropped the idea: it's just impossible to
design, much less write, such a utility.
- You can't make it portable because there's no universal standard.
There is no portable way of creating device special files, for instance.
So s6-hiercopy appears here instead of in
s6-portable-utils:
the platform where I needed that kind of tool is Linux.
- You can't make it reliable because Unix's set of filesystem
management primitives is just too weak. It lacks a lot of atomic
operations, and filesystem transactions. As a result, s6-hiercopy
is a walking race condition and should absolutely not
be considered instant when used in a multitasking environment.
But then, cp -a shouldn't either.