Opcje polecenia cp i nadpisywanie bez pytania | yes i ukośnik wsteczny

cp przy kopiowaniu wielu plików pyta o każdy plik, czy go nadpisać, i praca staje. Polecenie cp to skrót od Copy i kopiuje pliki oraz katalogi; ten wpis omawia podstawy, opcje i 2 sposoby, by nadpisać wszystko bez pytania.
Polecenie cp bez pytania nadpisuje plik o tej samej nazwie w miejscu docelowym. Aby temu zapobiec, ustawiono [alias cp='cp -i'], więc przed nadpisaniem pyta o potwierdzenie.
✅ Podstawowe użycie
Podstawowa składnia wygląda tak.
cp -[opcje] <źródło: Plik lub katalog> <cel: ścieżka lub Plik lub katalog ścieżka>Najpierw wpisz, co kopiujesz, a potem miejsce docelowe lub nową nazwę.

# kopiowanie plik > plik
cp file1 file2
# kopiowanie plik > do katalogu
cp file1 dir1/
# kopiowanie 2 plików > do katalogu
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Kopiowanie katalogu wymaga opcji -r, -R lub -a.
- -r/-R : rekurencyjne kopiowanie katalogu z zawartością
- -a : kopiowanie rekurencyjne z zachowaniem atrybutów (zawiera -r)
✅ 2 sposoby nadpisania wszystkiego przez cp
Polecenie cp pyta [overwrite], bo dla cp ustawiono alias [cp -i].
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Przy jednym czy dwóch plikach to nic, ale przy wielu trzeba odpowiadać za każdy.
Wtedy dwie metody poniżej nadpisują bez pytania.
yes | cp -ar /home/ ./Pierwsza to [yes |] na początku: odpowiada y na każde pytanie i kopiowanie idzie dalej. Druga to ukośnik wsteczny [\] przed poleceniem: omija alias i uruchamia oryginalne cp.
\cp -ar /home/ ./✅ Opcje polecenia cp & symulator
| Opcja | Opis | |
|---|---|---|
| -a | --archiveKopiowanie z zachowaniem wszystkich uprawnień, właściciela, grupy i znaczników czasu oryginału[zachowuje uprawnienia, właściciela, grupę, znaczniki czasu i nie tylko] + [-d : kopiuje samo dowiązanie symboliczne] + [-R : kopiuje katalogi rekurencyjnie] | |
| -b | Jeśli plik docelowy już istnieje, przed kopiowaniem tworzy jego kopię zapasową | |
| -d | Jeśli źródło jest dowiązaniem symbolicznym, kopiuje samo dowiązanie | |
| -f | Jeśli plik docelowy istnieje, usuwa go siłą i kopiuje | |
| -i | --interactivePyta użytkownika o potwierdzenie przed nadpisaniemalias cp='cp -i' | |
| -l(mała litera) | Kopiuje jako dowiązanie twarde | |
| -P | Kopiuje dowiązanie symboliczne tak, jak jest, bez podążania za nim | |
| -p | Zachowuje właściciela, grupę, uprawnienia i znaczniki czasu oryginału | |
| -r, -R | Kopiuje katalogi rekurencyjnie (z podkatalogami i plikami)Opcja -r nie jest standardem POSIX i może sprawiać problemy z dowiązaniami symbolicznymi i plikami urządzeń. | |
| -s | Kopiuje jako dowiązanie symboliczne (źródło trzeba podać ścieżką bezwzględną) | |
| -u | Nie nadpisuje, gdy plik docelowy jest nowszy lub taki sam | |
| -v | Wypisuje postęp kopiowania (verbose)Pokazuje komunikat po każdym ukończonym kopiowaniu | |
| -x | Nie kopiuje, gdy źródło i cel są w różnych systemach plików. |
🔲 -a: zachowanie atrybutów plików & kopiowanie podkatalogów i plików
Do kopiowania podkatalogów z zachowaniem atrybutów oryginalnych plików wystarczy sama opcja [-a]. Niektóre skrypty i narzędzia automatyzacji wymagają jednak jawnie [-r], więc czasem dodaje się też [-r] lub [-R].
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : kopiuje samo dowiązanie symboliczne]+[-R : kopiuje katalogi rekurencyjnie]+[--preserve=all]
| Elementy objęte --preserve=all | Opis |
|---|---|
| mode | Uprawnienia pliku (rwx itp.) |
| ownership | Właściciel (user) i grupa (group) |
| timestamps | Znaczniki czasu, np. czas ostatniej modyfikacji |
| links | Liczba dowiązań twardych (zachowuje wspólny inode) |
| context | Kontekst bezpieczeństwa SELinux |
| xattr | Atrybuty rozszerzone (dodatkowe metadane zapisane z plikiem) |
| all | Skrót obejmujący wszystkie powyższe elementy |
🔲 -u: kopiowanie tylko nowych i zmienionych plików
- Kopiuje tylko wtedy, gdy w miejscu docelowym nie ma pliku o tej nazwie, lub gdy źródło jest nowsze
- Często używane do kopii zapasowych i synchronizacji
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.