Cel cp -x (pozostanie w systemie plików)?

25

Jeśli chciałbym pozostać w tym samym systemie plików, czy nie mogę po prostu określić ścieżki wyjściowej dla tego samego systemu plików?

A może ma to zapobiec przypadkowemu opuszczeniu bieżącego systemu plików?

neverMind9
źródło
1
-x w innym kontekście: unix.stackexchange.com/a/358331/30851, ale to samo dla cp: -x pomija rzeczy, jeśli migrujesz systemy plików i chciałbyś, aby była to kompletna kopia, rozważ zamontowanie w sposób, który daje pełny obraz.
frostschutz
1
To samo możesz zapytać o wiele flag, np . -i: „dlaczego nie podać po prostu miejsca docelowego, które nie istnieje”?
JigglyNaga
1
@JigglyNaga Też tak myślałem. Ale -x nie było dobrze sformułowane w dokumentacji i znacznie mniej oczywiste.
neverMind9,

Odpowiedzi:

59

Ogranicza to gdzie pliki są kopiowane z , gdzie nie są one kopiowane do. Przydaje się w przypadku kopii rekurencyjnych, aby kontrolować sposób cpschodzenia do podkatalogów. A zatem

cp -xr / blah

skopiuje tylko główny system plików, a nie żaden inny zamontowany system plików.

Zobacz na cp -xdokumentację (choć jego subtelne rozróżnienie).

Stephen Kitt
źródło
3
O tak, możesz nie chcieć kopiować udziałów sieciowych w / mnt. Ani zdalne repozytorium RCS zamontowane pod dyskiem domowym.
mckenzm
1
@mckenzm Również dlatego, że /mnttylko ludzka konwencja jest czasem egzekwowana przez konfigurację dystrybucji, ale nie jest wymagana przez system operacyjny. Czasami mam zamontowane sieciowe systemy plików, /var/somewebsite/www/sessionsaby wdrożyć serwery równoważące obciążenie
slebetman,
Rzeczywiście, ten rodzaj flagi zapobiega przypadkowemu kopiowaniu ogromnych udziałów sieciowych lub nośników wymiennych, o których zapomniano, że zostały zamontowane. I nie musisz podawać --excludeopcji ręcznego blokowania każdego z nich. Bardzo przydatne z rsync.
Lassi
3
Unika się również kopiowanie systemy plików takie jak /dev, /proc, /sysitd., Które zazwyczaj nie chcą czytać „en masse”.
Stephen Kitt
28

-xFlagę cpjest rozszerzeniem GNU. Podczas kopiowania pojedynczego pliku ta opcja nie przyniesie żadnego efektu, ale podczas kopiowania całej hierarchii plików -xopcja zapobiega kopiowaniu plików i katalogów, które nie znajdują się w tym samym systemie plików, co oryginalne źródło.

Na przykład w systemie plików z punktami podłączenia w /usri /usr/localużycie cp -xR /usr /some-destnie skopiowałoby hierarchii /usr/local.

Istnieją inne narzędzia z przewozem -xopcji z podobnych semantyki, jak dui find(flaga jest nazywana -xdevza find) i rsync.

Kusalananda
źródło