Kopírování souborů a adresářů je jedním z nejběžnějších úkolů, které budete provádět při práci na příkazovém řádku. V Linuxu existuje několik příkazů pro kopírování souborů s cp
a rsync
jsou nejpoužívanějšími nástroji.
Je běžnou praxí používat cp
příkaz pro kopírování souborů a rsync
pro kopírování adresářů.
Abyste mohli 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.
Kopírování souborů pomocí cp
Příkaz #
V operačních systémech Linux a Unix cp
příkaz se používá pro kopírování souborů a adresářů.
Nejjednodušším případem použití je zkopírování souboru v aktuálním pracovním adresáři. Chcete-li například zkopírovat soubor s názvem file.txt
do souboru s názvem file_backup.txt
v aktuálním adresáři byste spustili následující příkaz:
cp file.txt file_backup.txt
Pokud cílový soubor existuje, bude přepsán. Chcete-li před přepsáním souborů získat výzvu k potvrzení, použijte -i
možnost.
cp -i file.txt file_backup.txt
Ve výchozím nastavení při použití cp
příkaz zkopírovat soubor, nový soubor bude vlastnit uživatel provádějící 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
. Při použití této možnosti příkaz vypíše, co se právě dělá:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Zkopírujte soubor do adresáře #
Chcete-li zkopírovat soubor do adresáře, zadejte absolutní nebo relativní cestu k adresáři. Když je cílový adresář vynechán, soubor se zkopíruje do aktuálního adresáře.
V následujícím příkladu kopírujeme soubor file.txt
do /backup
adresář:
cp file.txt /backup
Když jako cíl zadáte pouze název adresáře, bude mít zkopírovaný soubor stejný název jako původní soubor.
Pokud chcete soubor zkopírovat pod jiným názvem, musíte zadat požadovaný název souboru:
cp file.txt /backup/new_file.txt
Výše uvedený příkaz zkopíruje soubor do zadaného adresáře jako new_file.txt
.
Kopírovat více souborů #
Chcete-li zkopírovat více souborů a adresářů najednou, zadejte názvy zdrojových souborů a adresářů a jako poslední argument uveďte cílový adresář:
cp file.txt dir file1.txt file2.txt dir1
Při kopírování více souborů musí být cílem adresář.
cp
příkaz také umožňuje používat porovnávání vzorů. Chcete-li například zkopírovat všechny soubory .png
soubory z aktuálního adresáře do /backup
adresář, byste použili:
cp *.png /backup
Kopírování adresářů pomocí cp
Příkaz #
Chcete-li zkopírovat adresář, včetně všech jeho souborů a podadresářů, použijte -R
nebo -r
volba. 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 cílový adresář, použijte -T
možnost:
cp -RT Pictures Pictures_backup
Možnosti používané 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 použít -R
možnost.
Kopírování souborů a adresářů pomocí rsync
Příkaz #
rsync
je rychlý a všestranný nástroj příkazového řádku, který synchronizuje soubory a adresáře mezi dvěma umístěními. Lze jej použít ke kopírování souborů do místních a vzdálených umístění.
rsync
obsahuje mnoho možností, které řídí každý aspekt jeho chování
Nejužitečnější možností je -a
které rekurzivně kopírují adresáře, přenášejí speciální a bloková zařízení a zachovávají symbolické odkazy, časy úprav, skupiny, vlastnictví a oprávnění.
Chcete-li zkopírovat jeden soubor z jednoho do jiného umístění, spusťte následující příkaz:
rsync -a file.txt file_backup.txt
Pokud cílový soubor existuje, rsync
přepíše jej.
Stejný příkaz lze použít ke zkopírování adresáře:
rsync -a /var/www/public_html/ /var/www/public_html_backup/
rsync
ohrožuje zdrojové adresáře, které končí koncovým lomítkem /
jinak. Pokud ke zdrojovému adresáři přidáte koncové lomítko, příkaz zkopíruje do cílového adresáře pouze obsah zdrojového adresáře. Když je vynecháno koncové lomítko, rsync
zkopíruje zdrojový adresář do cílového adresáře. Nejbezpečnější možností je vždy zahrnout koncové lomítko /
v cíli i zdroji.
Chcete-li se dozvědět více o rsync
zkontrolujte následující články:
- Jak používat Rsync pro místní a vzdálený přenos dat a synchronizaci
- Jak vyloučit soubory a adresáře pomocí Rsync
Závěr č.
Ukázali jsme vám, jak kopírovat soubory a adresáře v systémech Linux a Unix pomocí cp
a rsync
nástroje.
Pokud máte nějaké dotazy, zanechte prosím níže komentář.