Objetivo do cp -x (permanecer no sistema de arquivos)?

25

Se eu quisesse permanecer no mesmo sistema de arquivos, não poderia simplesmente especificar um caminho de saída para o mesmo sistema de arquivos?

Ou é para evitar sair acidentalmente do sistema de arquivos atual?

neverMind9
fonte
11
-x em um contexto diferente: unix.stackexchange.com/a/358331/30851, mas o mesmo para cp: -x ignora as coisas, se você estiver migrando sistemas de arquivos e quiser que seja uma cópia completa, considere a montagem de uma maneira que permita você a imagem completa.
Frostschutz 28/11/19
11
Você pode perguntar o mesmo sobre muitos sinalizadores, por exemplo -i: "por que não apenas especificar um destino que não existe"?
JigglyNaga
11
@JigglyNaga Eu estava pensando isso também. Mas -x não foi bem formulado na documentação e muito menos óbvio.
neverMind9

Respostas:

59

Ela limita onde os arquivos são copiados a partir , não onde eles estão copiados. É útil com cópias recursivas, para controlar como cpdesce em subdiretórios. portanto

cp -xr / blah

copiará apenas o sistema de arquivos raiz, não nenhum dos outros sistemas de arquivos montados.

Consulte a cp -xdocumentação (embora sua distinção seja sutil).

Stephen Kitt
fonte
3
Ah, sim, talvez você não queira copiar compartilhamentos de rede em / mnt. Nem um repositório RCS remoto montado em sua unidade doméstica.
Mckenzm
11
@mckenzm Também porque, /mntàs vezes, é apenas uma convenção humana aplicada pela configuração de uma distribuição, mas não um requisito do sistema operacional. Eu às vezes têm sistemas de arquivos de rede montada sob /var/somewebsite/www/sessionsa implementar balanceamento de carga servidores web
slebetman
Na verdade, esse tipo de sinalizador impede a cópia acidental de grandes compartilhamentos de rede ou mídias removíveis que você esqueceu de montar. E você não precisa dar --excludeopções para bloquear manualmente cada um deles. Muito útil com o rsync.
Lassi 29/11
3
Ele também evita os sistemas de arquivos de cópia, como /dev, /proc, /sysetc., que você normalmente não querem ler “en masse”.
Stephen Kitt
28

o -x sinalizador para cpé uma extensão GNU. Ao copiar um único arquivo, essa opção não terá efeito, mas ao copiar uma hierarquia de arquivos inteira, o-x opção impede a cópia de arquivos e diretórios que não residem no mesmo sistema de arquivos que a fonte original.

Por exemplo, em um sistema de arquivos com pontos de montagem em /usre/usr/local , o uso cp -xR /usr /some-destnão copiaria a hierarquia em /usr/local.

Existem outros utilitários com uma -xopção com a semântica semelhantes, tais como a due find(a bandeira é chamado -xdevpara find), e rsync.

Kusalananda
fonte