cp je základní příkaz v Linuxu pro kopírování souborů, stejně jako copy ve Windows. Ostatně je zkratka právě z oné delší verze.
Funguje klasicky, tedy napíšete cp odkud kam a systém vytvoří kopii. V odkud je možné uvádět jméns souborů ale používat i zástupné znaky (* a ?) pro výběr více souborů. Pozor na to, že skryté soubory (ty co začínají tečkou) to bude ignorovat.
Vtip s tečkovanými soubory je, že
- cp -a zdroj/* cil/ # nekopíruje je
- cp -a zdroj/. cil/ # je kopíruje
- cp cp -a zdroj cil/ # je kopíruje
Základní příklady použití
Základní kopie jednoho souboru
cp foto.jpg /mnt/usb/
Více souborů do adresáře (ano, jako zdroj jde uvádět víc věcí, cíl je pak ten poslední)
cp *.png *.jpg /mnt/usb/obrazky/
Kopie včetně skrytých souborů (nepoužívat hvězdičku)
cp -a projekt/. /mnt/backup/projekt/

TIP: Chcete návod? V Linuxu prostě zkustei man cp. Na webu třeba v cp(1) — Linux manual page
Kopírování složek
Umí kopírovat i složky (tedy jejich obsah), ale tam musíte použít -r jako parametr. Tedy něco jako cp -r vychozislozka/ cilovaslozka/
MImochodem, místo -r se doporučuje používat -R.
Hodit se alespíše může -a (-dR –preserve=all) což je kombinace rekurze (tedy obsahu složek) a zachování práv, vlastníka, časů, symlinků, ACL, xattr atd
Rekurzivní kopie adresáře (doporučeně -a)
cp -a projekt/ /mnt/backup/
Aby toho nebylo málo, tak je tu ještě –parents, které v cíli vytvoří i cestu. Tedy tu původní cestu ke zdroji, pro názornost:
cp –parents a/b/c.txt /backup/ → /backup/a/b/c.txt (tedy v /backup vytvoří ony složky)
Zachovat cestu (parents)
cp –parents src/app/config.yaml /backup/
“Synchronizace” pouze nových/novějších souborů
cp se v základní podobě dá použít pro zálohování/synchronizaci, ale tam je vhodné využít -u. Zajistí, že se budou kopírovat pouze novější soubory+ty co v cíli chybí a ne tedy vše co ve výchozí složce máte. Pochopitelně tedy v kombinaci jako -ru
Kopie pouze novějších souborů (rychlé „přisypání“)
cp -a -u zdroj/ cil/
TIP: pokud chcete opravdu synchronizovat, naučte se používat rsync
Ochrana proti blbosti
cp prostě spustíte a ono kopíruje a klidně přepíše cokoliv, co v cílovém místě je a nebude se na nic ptát. Pokud chcete aby se ptalo, použijte -i (interaktivně).
Užitečné je -n (no-clobber) které zajistí, že pokud v cíli už soubor existuje, nepřepíše ho. Opak je -f (force) s vynuceným přepsáním.
Bezpečně – nepřepisuj existující
cp -a -n zdroj/ cil/
Šikovné je -b (–backup) kde případné přepsání vytvoří zároveň zálohu. Původní jméno souboru doplněné o příponu (tu lze určit pomocí –suffix)
Při přepisu dělej zálohu s příponou .bak
cp -a –backup –suffix=.bak zdroj.cfg /etc/zdroj.cfg
Podrobně vidět co se děje
Podobně užitečné je -v (verbose) kde probíhající cp bude vypisovat co kopíruje (odkud kam).
Včetně atributů
Pokud chcete aby v cílovém podobě byly zachovány atributy (vlastnosti), tak použijte -p. Bez přidání budou mít kopie nový timestamp, vlastníka i mode podle toho kam kopírujete. S -p timestamp zůstane. Pro zachování vlastnictví bude třeba spouštět přes sudo (či jiný odpovídající spůsob)
Symlinky
Také dost důležité:
- -d (kopíruj symlinky jako symlinky)
- -L (následuj symlinky)
- -P (nenásleduj).
Jde i nevytvářet kopie, ale vytvořit symlinky s pomocí -l (hardlinky), -s (symlinky). Což vám ale neudělá duplikát (kopii) ale jen “odkaz” na originál.
Další tipy týkající se Linuxu (a podobných věcí)
-
TIP#3233: Jak se připojit k souborům sdíleným na Macu přes síť
V Jak na MacOS zpřístupnit soubory pro další počítače přes síť můžete zjistit jak na Macu zpřístupnit složky pro sdílení přes síť. A v tomto tipu, jak k nim přistupovat z dalších…
-
TIP#3213: Jak na MacOS, Windows i jinde mít snadného a praktického SSH klienta?
SSH klient, terminál, prostě cokoliv co vám umožní přístup na stroje co mají “linuxový shell” je vesmírně užitečná věc. A je dost jisté, že si nevystačíte s tím co má daný systém…
-
TIP#3165: Jak uspat/hibernovat Ubuntu z terminalu (příkazové řádky)
Pokud máte počítač s displejem, klávesnici a myší, tak uspání či hibernace bývají jednoduché. Prostě je to tam někde v menu a stačí kliknout. Nebo použít zapínací tlačítko. Co když ale máte…
-
TIP#3164: Acemagic Mini PC jako alternativa k velké PC krabici
Pořídil jsem Acemagic A3A i3-1215U (16+512GB) Silver, mám v plánu u z toho udělat “homelab server” pro nějaké věci, které nechci páchat na QNAP NAS ani na “klasickém PC”, natož na Mac…
-
TIP#3160: Jak v terminálu v Linuxu hledat v souborech. Grep a ripgrep
Něco co budete potřebovat často, zjistit zda v nějakém textovém souboru je něco obsaženo (a kde). Případně ve kterém ze souborů ve složce to něco jeho. Související příspěvky TIP#3213: Jak na MacOS,…
-
TIP#3126: Aplikace pro Chromebook? To nejlepší ze tří světů. Vlastní, pro Android a pro Linux
Pro Chromebooky existují tři hlavní typy aplikací. Nativní, pro Android a pro Linux. Dává to dost velké možnosti najít nejen ty rozšířené a oblíbené, ale přesně to co potřebujete. Související příspěvky TIP#2805: Historie…
-
TIP#3123: Jak na používání Chromebooku a iPhone? Platí i na používání čehokoliv, co není od Apple a k tomu iPhone
Co když máte iPhone a k tomu Chromebook? Jak tohle vhodně skloubit? Prakticky stejně, jako když máte iPhone a k tomu Windows či Linux. Prostě něco co není uzavřený jablečný svět. Související…
-
TIP#3119: Jak v ChromeOS mít terminál (shell). Jak na virtuální stroj s Linuxem. Vývojářský režim a co je to VT2 shell
Chromebooky umí normální linuxový terminál – stačí v nastavení zapnout Vývojové prostředí Linux. Tím se vytvoří virtuální stroj s Debianem (Crostini) a dostanete plnohodnotný shell, aniž byste museli zapínat Developer Mode. Související…
-
TIP#3115: Jak v příkazové řádce spustit více příkazů než jeden
Příkazovou řádku znáte. Ve Windows je CMD (a nově PowerShell), v Linuxu/Macu je to terminál zpřístupňující shell, v různých provedeních (bash, zsh, atd). Je velmi snadné tam prostě spustit jeden příkaz, ale…
-
TIP#3113: K čemu použít starší Chromebook? Ale i starší notebook či počítač
Pokud jste si pořídili něco novějšího či jiného a zbyl vám Chromebook, je řada možností jak ho začít používat na něco trochu jiného, než byla práce či zábava. Související příspěvky TIP#3131: Chromebook:…
-
TIP#3111: Umíte používat rouru/pipe (|)? Jaké další podobné operátory můžete využívat?
Rouru (|) znáte? A co < a >? Víte jak tyhle věcí fungují a k čemu je můžete použít? Liší se to nějak mezi operačními systémy? Související příspěvky TIP#3115: Jak v příkazové…
-
TIP#486: Jak zkontrolovat otevřené TCP/IP porty ve Windows. Poznejte příkaz netstat a další možnost jak na to
Po vysvětlení k čemu slouží ve Windows příkaz ipconfig je čas na další související příkaz (spustitelný z příkazové řádky). Jmenuje se netstat a můžete si ho nejprve vyzkoušet jako netstat /? (případně…
-
TIP#3092: Jak v Linuxu kopírovat soubory a složky? Naučte se cp
cp je základní příkaz v Linuxu pro kopírování souborů, stejně jako copy ve Windows. Ostatně je zkratka právě z oné delší verze. Funguje klasicky, tedy napíšete cp odkud kam a systém vytvoří…
-
TIP#3091: Jak na MacOS mít (spustit) Linux?
MacOS je “tak trochu” Linux, ale se záplavou změn a omezení vytvořených Apple. Pokud potřebujete skutečný Linux, tak je na to třeba jít trochu jinak. Související příspěvky TIP#3226: Jak na Macu s…














