cp -x的目的(保留在文件系统上)?


25

如果我想保留在同一文件系统上,是否不能仅指定同一文件系统的输出路径?

还是防止意外离开当前文件系统?


1
-x在不同的上下文中:unix.stackexchange.com/a/358331/30851但对于cp相同:-x跳过了一些事情,如果要迁移文件系统并且希望将其作为完整副本,请考虑采用以下方式进行安装:您全貌。
弗罗斯特斯

1
您可能会问很多标志,例如-i:“为什么不仅仅指定一个不存在的目的地”?
JigglyNaga

1
@JigglyNaga我也在想。但是-x在文档中的措辞不太好,而且不太明显。
neverMind9

Answers:


59

它限制了文件的复制位置,而不是文件的复制位置。它对于递归副本很有用,以控制如何cp降级为子目录。从而

cp -xr / blah

将仅复制根文件系统,而不复制任何其他已安装的文件系统。

请参阅cp -x文件(虽然它的区别是微妙的)。


3
哦,是的,您可能不想复制/ mnt下的网络共享。也不会在主驱动器下安装远程RCS存储库。
mckenzm

1
@mckenzm这也是因为/mnt发行版的安装有时只是强制执行人类惯例,而不是OS的要求。我有时会安装网络文件系统/var/somewebsite/www/sessions以实现负载均衡Web服务器
slebetman,

确实,这种标记可防止意外复制您忘记安装的巨大网络共享或可移动媒体。而且您不需要提供--exclude手动阻止每个选项的选项。对于rsync非常有用。
拉西

3
它也避免了复制的文件系统,如/dev/proc/sys等你通常并不想读“集体”。
史蒂芬·基特

28

-x标志cp是GNU扩展。复制单个文件时,此选项无效,但是复制整个文件层次结构时,该-x选项可防止复制与原始源不在同一文件系统上的文件和目录。

例如,在挂载点为/usr和的文件系统上/usr/local,使用cp -xR /usr /some-dest不会复制的层次结构/usr/local

还有其他-x具有类似语义的选项的实用程序,例如dufind(标记-xdevfind)和rsync

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.