Szukam różnicy między cp -r
i cp -a
. Co oznacza „rekurencyjny” w kontekście kopiowania plików z folderu?
Szukam różnicy między cp -r
i cp -a
. Co oznacza „rekurencyjny” w kontekście kopiowania plików z folderu?
Odpowiedzi:
Rekurencyjne oznacza, że cp
kopiuje zawartość katalogów, a jeśli katalog zawiera podkatalogi, są one również kopiowane (rekurencyjnie). Bez -R
The cp
komenda pomija katalogi. -r
jest identyczny z -R
Linuksem, różni się w niektórych przypadkach brzegowych w niektórych innych wariantach uniksowych.
Domyślnie cp
tworzy 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 -p
opcji 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 -a
opcja oznacza -R
i -p
kilka 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.).
-r
ponieważ -a
(dla a
rchive) jest zawsze najbezpieczniejszym i prawdopodobnie tym, czego się spodziewałeś.
-r
jest 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
.
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.