Komendy Linux: Kopiowanie plików oraz 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:
user@linux:~$ 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ą.
user@linux:~$ 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 plik1 do katalogu katalog1, 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.
user@linux:~$ 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.
user@linux:~$ 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ć.
user@linux:~$ 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:
user@linux:~$ cp -b -S _kopia * katalog1
user@linux:~$ 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.
user@linux:~$ cp -v * katalog1
' plik1 ' -> ' katalog1/plik1 '
' plik2 ' -> ' katalog1/plik2 '
' plik3 ' -> ' katalog1/plik3 '