Komendy Linux: Kopiowanie plików oraz katalogów

Kopiowanie plików i katalogów

 

W systemie Linux kopiowanie plików i katalogów wykonuje się za pomocą jednego polecenia - cp - wraz z odpowiednimi parametrami. Ogólnie składnia tego polecenia określa element, który zamierzamy skopiować, oraz miejsce, w którym ma się znaleźć kopiowany element:

 

[email protected]:~$ cp plik1 katalog1

 

 

 

 

W tym wypadku chcemy skopiować plik o nazwie plik1 do katalogu katalog1. Jeżeli nie podamy nazwy elementu źródłowego, tak jak w powyższym przykładzie, element zostanie skopiowany z taką samą

nazwą. Jeżeli podamy nazwę, która ma być nadana kopii elementu, uzyskamy kopię z właściwą nazwą.

 

[email protected]:~$ cp plik1 katalog1/plik2

plik2

 

W tym wypadku chcemy skopiować plik o nazwie plik1 do katalogu katalog1, ale kopia będzie nosić nazwę plik2. Efekt jest podobny do tego jak na rysunku poniżej.

 

 

 

 

 

  • Parametry polecenia (cp):

 

- b [metoda] , --backup [=metoda]

Jeżeli kopiujemy element do danej lokalizacji, w której znajduje się już plik o identycznej nazwie, wówczas zostanie on nadpisany przez plik, który obecnie kopiujemy; spowoduje to utratę zawartości nadpisanego pliku. Jeśli jednak użyjemy parametru - b w analogicznym przypadku, plik istniejący już w danej lokalizacji zostanie zapisany jako kopia zapasowa.

 

Spróbujmy zatem skopiować plik o nazwie plikl do katalogu katalogl, w którym istnieje już plik o tej nazwie. Jak widzimy, mamy teraz dwa takie pliki. Jeden to plik oryginalny, zapisany jako kopia, a drugi to plik przed chwilą przez nas skopiowany.

 

[email protected]:~$ cp -b plik1 katalog1

plik1 plik1~

 

 

 

 

-d , --no-dereference

Użycie parametru powoduje kopiowanie dowiązań symbolicznych zamiast elementów, na które te dowiązania wskazują.

 

-f ,--force

Jeżeli w katalogu, do którego kopiujemy plik, istnieje już plik o identycznej nazwie, po użyciu tego parametru zostanie on nadpisany bez wyświetlenia jakiegokolwiek pytania.

 

[email protected]:~$ cp -f plik1 katalog1

 

-i , --interactive

Jeżeli w katalogu, d o którego kopiujemy plik, występuje element o identycznej nazwie, system „zapyta", czy chcemy go zastąpić plikiem, który kopiujemy. Odpowiadamy, naciskając klawisz y dla potwierdzenia lub jakikolwiek inny, aby zaprzeczyć.

 

[email protected]:~$ cp -i plik1 katalog1

 

-l , --link

Za pomocą tego parametru zamiast kopiować element, tworzy się jego dowiązanie twarde.

 

-p , --preserve

Przy kopiowaniu plików każdy z nich traci swoje prawa dostępu, właściciela i grupę oraz czas utworzenia. Wartości te są ustawiane zgodnie z elementem, do którego kopiujemy plik. W przypadku zastosowania omawianej opcji oryginalne prawa i wszelkie inne dane dotyczące kopiowanego pliku są zachowywane.

 

-r Zastosowanie tego parametru pozwala na kopiowanie rekurencyjne całych katalogów i ich zawartości wraz z zachowaniem ich struktury.

 

-R , --recursive

Użycie komendy wraz z parametrem pozwala kopiować ekurencyjnie katalogi i ich całe struktury, dodatkowo zachowując wszelkie elementy niebędące plikami.

 

- S przyr_kopii , --suff1x=przyr_kopii

Jeżeli kopiujemy element wraz z opcją -b, zostaną utworzone kopie zapasowe tych plików, które istnieją już w danej lokalizacji. Dzięki podanej tu opcji możemy dodatkowo ustalić własną nazwę sufiksu dla tych plików:

 

[email protected]:~$ cp -b -S _kopia * katalog1 

[email protected]:~$ ls katalog1 

plik1 plik1_kopia plik2 plik2_kopia plik3

plik3_kopia

 

 

 

 

-v , --verbose

Zastosowanie parametru pozwala wyświetlić informacje o każdym pliku, który został skopiowany.

 

[email protected]:~$ cp -b -S _kopia * katalog1 

[email protected]:~$ ls katalog1 

plik1 plik1_kopia plik2 plik2_kopia plik3

plik3_kopia

 

[email protected]:~$ cp -v * katalog1 

' plik1 ' -> ' katalog1/plik1 '

' plik2 ' -> ' katalog1/plik2 '

' plik3 ' -> ' katalog1/plik3 '