If I wanted to stay on the same file system, couldn't I just specify an output path for the same file system?
Or is it to prevent accidentally leaving the current file system?
If I wanted to stay on the same file system, couldn't I just specify an output path for the same file system?
Or is it to prevent accidentally leaving the current 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).
/mnt
is only a human convention sometimes enforced by a distro's setup but not a requirement of the OS. I sometimes have network filesystems mounted under /var/somewebsite/www/sessions
to implement load balancing web servers
– slebetman
Nov 29 '18 at 15:00
--exclude
options to manually block each of them. Very useful with rsync.
– Lassi
Nov 29 '18 at 15:08
/dev
, /proc
, /sys
etc. which you typically don’t want to read “en masse”.
– Stephen Kitt
Nov 29 '18 at 15:09
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
.
-i
: "why not just specify a destination that doesn't exist"? – JigglyNaga Nov 28 '18 at 14:58