Purpose of cp -x (stay on file system)?

It limits where files are copied from, not where they’re copied to. It’s useful with recursive copies, to control how cp descends into subdirectories. Thus

cp -xr / blah

will only copy the root file system, not any of the other file systems mounted.

See the cp -x documentation (although its distinction is subtle).


The -x flag to cp is a GNU extension. When copying a single file, this option will have no effect, but when copying a whole file hierarchy, the -x option prevents the copying of files and directories that do not live on the same filesystem as the original source.

For example, on a filesystem with mount points at /usr and /usr/local, using cp -xR /usr /some-dest would not copy the hierarchy under /usr/local.

There are other utilities with an -x option with similar semantics, such as du and find (the flag is called -xdev for find), and rsync.