Призначення cp -x (перебування у файловій системі)?


25

Якщо я хотів залишитися в одній файловій системі, чи не міг би я просто вказати вихідний шлях для тієї ж файлової системи?

Або це запобігти випадковому виходу з поточної файлової системи?


1
-x в іншому контексті: unix.stackexchange.com/a/358331/30851, але те ж саме для cp: -x пропускає речі, якщо ви мігруєте файлові системи і хотіли б, щоб вона була повноцінною копією, розгляньте можливість монтажу таким чином, ви повну картину.
frostschutz

1
Ви можете запитати те саме про багато прапорів, наприклад -i: "чому б просто не вказати місце призначення, яке не існує"?
JigglyNaga

1
@JigglyNaga Я так само думав. Але -x не був добре сформульований у документації та набагато менш очевидним.
neverMind9

Відповіді:


59

Це обмежує , де файли копіюються з , не там , де вони скопіювали. Це корисно за допомогою рекурсивних копій для контролю cpнадходженням до підкаталогів. Таким чином

cp -xr / blah

буде копіювати лише кореневу файлову систему, а не будь-яку іншу встановлену файлову систему.

Дивіться в cp -xдокументації (хоча його відмінність є тонким).


3
О так, ви, можливо, не захочете копіювати мережеві спільні файли під / mnt. Ні віддалене сховище RCS, встановлене під домашнім накопичувачем.
mckenzm

1
@mckenzm Крім того, /mntце лише людська конвенція, яка іноді виконується налаштуваннями дистрибутива, але не є вимогою ОС. У мене інколи встановлено мережеві файлові системи, /var/somewebsite/www/sessionsщоб реалізовувати веб-сервери балансування навантаження
slebetman

Дійсно, такий прапор запобігає випадковому копіюванню величезних мережевих акцій або знімних носіїв, які ви забули, що встановили. І не потрібно давати --excludeпараметри, щоб блокувати кожен із них вручну. Дуже корисно з rsync.
Лассі

3
Це також дозволяє уникнути копіювання файлових систем , таких як /dev, /proc, і /sysт.д. , які ви зазвичай не хочуть читати «скопом».
Стівен Кітт

28

-xПрапор cpє розширенням GNU. При копіюванні одного файлу ця опція не матиме ефекту, але при копіюванні цілої ієрархії файлів ця -xопція запобігає копіюванню файлів і каталогів, які не живуть у тій же файловій системі, що і вихідне джерело.

Наприклад, у файловій системі з точками монтажу на /usrта /usr/local, використовуючи cp -xR /usr /some-dest, не буде копіювати ієрархію в /usr/local.

Є й багато інших програм з -xопцією з аналогічною семантикою, наприклад, duі find(прапор називається -xdevдля find), і rsync.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.