Objectif de cp -x (rester sur le système de fichiers)?

25

Si je voulais rester sur le même système de fichiers, ne pourrais-je pas simplement spécifier un chemin de sortie pour le même système de fichiers?

Ou est-ce pour éviter de quitter accidentellement le système de fichiers actuel?

neverMind9
la source
1
-x dans un contexte différent: unix.stackexchange.com/a/358331/30851 mais pareil pour cp: -x ignore les choses, si vous migrez des systèmes de fichiers et que vous souhaitez que ce soit une copie complète, envisagez de monter d'une manière qui donne vous l'image complète.
frostschutz
1
Vous pourriez demander la même chose à propos de nombreux indicateurs, par exemple -i: "pourquoi ne pas simplement spécifier une destination qui n'existe pas"?
JigglyNaga
1
@JigglyNaga Je le pensais aussi. Mais -x n'était pas bien formulé dans la documentation et beaucoup moins évident.
neverMind9

Réponses:

59

Elle limite où les fichiers sont copiés à partir , pas où ils sont copiés. Il est utile avec des copies récursives, pour contrôler la façon dont cpdescend dans les sous-répertoires. Ainsi

cp -xr / blah

copiera uniquement le système de fichiers racine, aucun des autres systèmes de fichiers montés.

Voir la cp -xdocumentation (bien que sa distinction soit subtile).

Stephen Kitt
la source
3
Oh oui, vous ne voudrez peut-être pas copier les partages réseau sous / mnt. Ni un référentiel RCS distant monté sous votre lecteur domestique.
mckenzm
1
@mckenzm Aussi parce que ce /mntn'est qu'une convention humaine parfois appliquée par la configuration d'une distribution mais pas une exigence du système d'exploitation. J'ai parfois des systèmes de fichiers réseau montés sous /var/somewebsite/www/sessionspour mettre en œuvre des serveurs Web d'équilibrage de charge
slebetman
En effet, ce type d'indicateur empêche de copier accidentellement d'énormes partages réseau ou des supports amovibles que vous avez oublié de monter. Et vous n'avez pas besoin de donner des --excludeoptions pour bloquer manuellement chacun d'eux. Très utile avec rsync.
Lassi
3
Il permet également d' éviter la copie des systèmes de fichiers tels que /dev, /proc, /sysetc. que vous ne voulez pas généralement de lire « en masse ».
Stephen Kitt
28

Le -xdrapeau de cpest une extension GNU. Lors de la copie d'un seul fichier, cette option n'aura aucun effet, mais lors de la copie d'une hiérarchie de fichiers entière, l' -xoption empêche la copie de fichiers et de répertoires qui ne vivent pas sur le même système de fichiers que la source d'origine.

Par exemple, sur un système de fichiers avec des points de montage à /usret /usr/local, utiliser cp -xR /usr /some-destne copiera pas la hiérarchie sous /usr/local.

Il existe d' autres utilitaires avec une -xoption de sémantique similaire, par exemple duet find(le drapeau est appelé -xdevpour find), et rsync.

Kusalananda
la source