Aby kopiować pliki lub katalogi za pomocą konsoli musimy użyć polecenia cp. Polecenia tego można użyć w trzech wariantach, tak więc poniżej pokazany został możliwy sposób użycia:
W gruncie rzeczy kopiowanie jest bardzo proste. W najbardziej podstawowym użyciu polega na podaniu dwóch argumentów, z czego pierwszy to plik (lub pliki), który ma zostać skopiowany, a drugi to miejsce do którego ma zostać skopiowany. Jeśli drugim argumentem jest nazwa pliku, to pierwszy plik zostanie skopiowany do drugiego (należy pamiętać, że podczas kopiowania nie wyskakuje żadne pytanie, czy napewno chcemy plik podmienić/nadpisać, jeśli już o takiej samej nazwie istniał wcześniej). Na poniższym rysunku zostało to pokazane.
Jeśli chcemy, aby nasz plik (pliki) zostały skopiowane do katalogu, to jako drugi argument (katalog) podajemy nazwę katalogu. Oczywiście tutaj tak samo jak w przypadku polecenia cd, możemy podać ścieżkę względną, lub bezwzględną.
Można wpisywać nazwy wszystkich plików, które mają zostać skopiowane, lecz za pomocą znacznika wieloznaczności nie musimy wpisywać wszystkich nazw, co zostało pokazane. Nie ma znaczenia, czy po nazwie katalogu postawimy ukośnik, czy nie, lecz ukośnik bardziej uwypukla, że kopiujemy pliki do katalogu.
Polecenie cp w prostym użyciu nie kopiuje katalogów. Możemy wymusić skopiowanie katalogu np. za pomocą opcji -r (ang. recursively). Sposób kopiowania katalogu z zawartością został pokazany poniżej.
Do tej pory pokazany został sposób kopiowania plików i katalogów za pomocą drugiego wariantu polecenia cp. W tym miejscu pokażę jak się kopiuje również z użyciem ostatniego. Z opcją -t najpierw podajemy nazwę katalogu, do którego mają zostać skopiowane pliki, a następnie listę kopiowanych plików.
W momencie, gdy chcemy skopiować plik i nazwać go tak jak nazywa się jeden z plików będących w katalogu do którego kopiujemy oraz tego drugiego pliku nie można otworzyć do pisania proste użycie polecenia cp zawiedzie. Aby dokonać tego, musimy użyć opcji -f / --force.
Jeśli chcemy skopiować dowiązanie symboliczne jako dowiązanie, a nie to na co ono wskazuje to musimy użyć opcji -d. Jeśli skopiowalibyśmy normalnie z użyciem najprostszej formy polecenia cp to skopiowalibyśmy plik, na który to dowiązanie wskazywało.
Trzeba pamiętać o jeszcze jednej ważnej rzeczy. Dowiązanie, które zostało skopiowane do katalogu kat1 wskazuje na dowiązanie, które jest w katalogu z którego kopiowaliśmy (kat3), a to z kolei na plik5, który znajduje się w innej lokalizacji. Jeśli usuniemy dowiązanie znajdujące się w kat3, to dowiązanie, które skopiowaliśmy do kat1 nie będzie wskazywało już na plik5.
Jeśli chcemy mieć pewność, że podczas kopiowania nie dojdzie do zastąpienia pliku bez powiadomienia, to możemy użyć opcji -i / --interactive. Wtedy przy próbie nadpisania dostaniemy komunikat.
W momencie, gdy interesuje nas kopiowanie plików razem z atrybutami musimy użyć opcji -p / --preserve. Jeśli nie podamy żadnych argumentów do tej opcji, do standardowo ustawione zostaną opcje: mode, ownership, timestamps. Dodatkowo można ustawić następujące: contex, links, xattr, all. Jak widać, plik x_plik1 ma te same atrybuty, co plik plik1. Data utworzenia pliku jest taka sama, mimo, że ten drugi został utworzony w innym czasie.
Jeśli chcemy skopiować plik tylko z niektórymi atrybutami, to musimy je podać wpisując je do części polecenia. Na rysunku poniższym zostało to pokazane. Jak widać, data utworzenia pliku nie została włączona do kopiowanych atrybutów, dlatego też plik ma inną datę utworzenia.
W przypadku, gdy chcemy skopiować plik razem z atrybutami, lecz pomijając jeden (lub więcej) atrybut, możemy skorzystać z opcji --no-preserve.
Za pomocą opcji --parents możemy zrobić ciekawą rzecz. Dajmy na to sytuację, w której plik o nazwie plik1 znajduje się w katalogu kat2/kat1/. Jeśli skopiujemy go z tym parametrem do katalogu dir1 to znajdzie się on w miejscu: dir1/kat2/kat1/plik1, co zostało pokazane na rysunku. Należy wspomnieć o tym, że dir1 musi być istniejącym katalogiem.
Jeśli chcemy, aby terminal informował nas o tym co robi podczas kopiowania musimy użyć opcji -v / --verbose. Zastosowanie tej opcji może być następujące.
Zobacz także:
Some rights reserved 2010 - 2015 Artur Pyszczuk
| Strona Główna | Kontakt |