Při práci na systémech Linux a Unix je kopírování souborů a adresářů jedním z nejběžnějších úkolů, které budete denně provádět.
cp
je nástroj příkazového řádku pro kopírování souborů a adresářů v systémech Unix a Linux.
V tomto článku vysvětlíme, jak používat cp
příkaz.
Jak používat cp
příkaz #
Obecná syntaxe pro cp
příkaz je následující:
cp [OPTIONS] SOURCE... DESTINATION
SOURCE
může obsahovat jeden nebo více souborů nebo adresářů jako argumenty a DESTINATION
argument může být jeden soubor nebo adresář.
- Když je
SOURCE
aDESTINATION
argumenty jsou oba soubory,cp
příkaz zkopíruje první soubor do druhého. Pokud soubor neexistuje, příkaz jej vytvoří. - Když je
SOURCE
má jako argumenty více souborů nebo adresářů,DESTINATION
argument musí být adresář. V této situaciSOURCE
soubory a adresáře se přesunou doDESTINATION
adresář. - Když je
SOURCE
aDESTINATION
argumenty jsou oba adresáře,cp
příkaz zkopíruje první adresář do druhého.
Chcete-li kopírovat soubory a adresáře, musíte mít alespoň oprávnění ke čtení zdrojového souboru a oprávnění k zápisu do cílového adresáře. V opačném případě se zobrazí chyba oprávnění odepřeno.
Kopírování souborů pomocí příkazu cp #
Nejzákladnější scénář použití cp
je zkopírovat soubor v aktuálním pracovním adresáři. Chcete-li například zkopírovat soubor s názvem file.txt
do file_backup.txt
, spustíte následující příkaz:
cp file file_backup
nebo:
cp file{,_backup}
Chcete-li zkopírovat soubor do jiného adresáře, zadejte absolutní nebo relativní cestu k cílovému adresáři.
Pokud je jako cíl určen pouze název adresáře, zkopírovaný soubor má stejný název jako původní soubor.
V následujícím příkladu kopírujeme soubor file.txt
do /backup
adresář:
cp file.txt /backup
Pokud chcete soubor zkopírovat pod jiným názvem, musíte zadat požadovaný název souboru. Níže uvedený příkaz zkopíruje soubor do zadaného adresáře jako new_file.txt
.
cp file.txt /backup/new_file.txt
Ve výchozím nastavení, pokud cílový soubor existuje, je přepsán. -n
volba říká cp
nepřepisovat existující soubor.
Chcete-li vynutit cp
k zobrazení výzvy k potvrzení použijte -i
možnost.
cp -i file.txt file_backup.txt
Pokud chcete zkopírovat soubor pouze v případě, že je novější než cíl, vyvolejte příkaz s -u
možnost:
cp -u file.txt file_backup.txt
Při kopírování souboru je nový soubor ve vlastnictví uživatele spouštějícího příkaz. Použijte -p
možnost zachovat režim souboru, vlastnictví a časová razítka:
cp -p file.txt file_backup.txt
Další možností, která může být užitečná, je -v
, který říká cp
pro tisk podrobného výstupu:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Kopírování adresářů pomocí příkazu cp #
Chcete-li zkopírovat adresář, včetně všech jeho souborů a podadresářů, použijte -R
nebo -r
možnost.
V následujícím příkladu kopírujeme adresář Pictures
do Pictures_backup
:
cp -R Pictures Pictures_backup
Výše uvedený příkaz vytvoří cílový adresář a rekurzivně zkopíruje všechny soubory a podadresáře ze zdrojového do cílového adresáře.
Pokud cílový adresář již existuje, samotný zdrojový adresář a jeho obsah se zkopírují do cílového adresáře.
Chcete-li zkopírovat pouze soubory a podadresáře, ale nikoli zdrojový adresář, použijte -T
možnost:
cp -RT Pictures Pictures_backup
Dalším způsobem, jak zkopírovat pouze obsah adresáře, ale ne adresář samotný, je použít zástupný znak (*
). Nevýhodou následujícího příkazu je, že nekopíruje skryté soubory a adresáře (ty začínající tečkou .
):
cp -RT Pictures/* Pictures_backup/
Všechny možnosti, které jsme použili v předchozí části při kopírování souborů, lze využít i při kopírování adresářů. Hlavní rozdíl je v tom, že při kopírování adresářů musíte vždy použít -R
možnost.
Kopírovat více souborů a adresářů #
Chcete-li zkopírovat více souborů a adresářů najednou, zadejte jejich názvy a jako poslední argument použijte cílový adresář:
cp file.txt dir file1.txt dir1
Při kopírování více souborů musí být cílem adresář.
Závěr č.
Kopírování souborů a adresářů pomocí cp
příkaz je jednoduchý úkol. Další informace o dostupných cp
možnosti, zadejte man cp
ve vašem terminálu.
Chcete-li kopírovat soubory přes síť, použijte rsync
a scp
nástroje.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.