Różnica między cp -r a cp -a


174

Szukam różnicy między cp -ri cp -a. Co oznacza „rekurencyjny” w kontekście kopiowania plików z folderu?


62
niektórzy szukają lepszego wyjaśnienia stron podręcznika, ponieważ nie zawsze jest jasne, co oznaczał opis. Musiałem kopać wiele razy i testować / eksperymentować, aby dowiedzieć się, co tak naprawdę dzieje się z danym poleceniem. Strona man grep może mnie pomylić każdego dnia.
Joe,

2
Rozumiem twoją frustrację, ale imo, najczęściej najlepszym sposobem na naukę jest testowanie i eksperymentowanie.
trzykrotnie

37
LUB ucz się, zadając pytania tutaj, uzyskując odpowiedź w sposób, który rozumiesz, a następnie lepiej rozumiesz, co i jak testować i eksperymentować. Należy pamiętać, że dla ciebie bardzo często nie działa, dla mnie itp. Itd.
Czy Lanni

Odpowiedzi:


198

Rekurencyjne oznacza, że cpkopiuje zawartość katalogów, a jeśli katalog zawiera podkatalogi, są one również kopiowane (rekurencyjnie). Bez -RThe cpkomenda pomija katalogi. -rjest identyczny z -RLinuksem, różni się w niektórych przypadkach brzegowych w niektórych innych wariantach uniksowych.

Domyślnie cptworzy nowy plik, który ma taką samą zawartość jak stary plik i takie same uprawnienia, ale ograniczone przez umask ; kopia jest datowana od momentu kopiowania i należy do użytkownika wykonującego kopię. Dzięki tej -popcji kopia ma ten sam czas modyfikacji, ten sam czas dostępu i takie same uprawnienia jak oryginał. Ma również tego samego właściciela i grupę co oryginał, jeśli użytkownik wykonujący kopię ma uprawnienia do tworzenia takich plików.

Ta -aopcja oznacza -Ri -pkilka innych opcji konserwacji. Próbuje utworzyć kopię możliwie najbliższą oryginałowi: to samo drzewo katalogów, te same typy plików, ta sama zawartość, te same metadane (czasy, uprawnienia, rozszerzone atrybuty itp.).


35
Zasadniczo, chyba że chcesz czegoś specjalnego, nigdy nie potrzebujesz, -rponieważ -a(dla archive) jest zawsze najbezpieczniejszym i prawdopodobnie tym, czego się spodziewałeś.
ams

2
@ams Tak, to dobre podsumowanie. Jedynym częstym powodem do użycia -rjest to, że korzystasz z jakiegoś wariantu uniksowego innego niż Linux, który go nie ma -a, i na ogół byś go używał cp -rp. Lub rsync -a.
Gilles,

czasami uprawnienia pozwolą -r, ale nie -a
DrCord

Nie -r, nie -R nie działa w Ubuntu 18
Arkady

16

Opcja -r lub -R dla „rekurencyjnego” oznacza, że ​​skopiuje wszystkie pliki, w tym pliki z podfolderów.

Podana opcja -a jest taka sama jak -dR, co oznacza, że ​​zachowa łącza, a także skopiuje zawartość podkatalogów. Zachowanie linków oznacza, że ​​nie będą one podążać za linkami, ponieważ są rekurencyjnie kopiowane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.