Jako uživatel Linuxu je kopírování souborů a adresářů jedním z nejběžnějších každodenních operací příkaz task.cp se používá ke kopírování souborů a adresářů z jednoho místního místa na jiné pomocí příkazového řádku. Příkaz cp je dostupný téměř ve všech operačních systémech Unix a Linux
V tomto článku předvedeme 16 užitečných příkladů příkazů cp speciálně pro linuxové začátečníky. Následuje základní syntaxe příkazu cp,
Zkopírujte soubor do jiného souboru
# cp {options} zdrojový_soubor cílový_soubor
Zkopírujte soubory do jiného adresáře nebo složky
# cp {options} source_file target_directory
Kopírovat adresář do adresáře
# cp {options} zdrojový_adresář cílový_adresář
Pojďme se vrhnout na praktické příklady příkazu cp,
Příklad:1) Zkopírujte soubor do cílového adresáře
Předpokládejme, že chceme zkopírovat soubor /etc/passwd do adresáře /mnt/backup pro účely zálohování, takže spusťte příkaz cp,
[email protected]:~# cp /etc/passwd /mnt/backup/ [email protected]:~#
Použijte níže uvedený příkaz k ověření, zda byl zkopírován nebo ne.
[email protected]:~# ls -l /mnt/backup/ total 4 -rw-r--r-- 1 root root 2410 Feb 3 17:10 passwd [email protected]:~#
Příklad:2 Kopírování více souborů současně
Předpokládejme, že chceme zkopírovat více (/etc/passwd, /etc/group &/etc/shadow) současně do cílového adresáře (/mnt/backup)
[email protected]:~# cp /etc/passwd /etc/group /etc/shadow /mnt/backup/ [email protected]:~#
Příklad:3) Interaktivní kopírování souborů (-i)
Pokud chcete interaktivně kopírovat soubory z jednoho místa na druhé, použijte volbu „-i“ v příkazu cp, interaktivní volba funguje pouze v případě, že cílový adresář již obsahuje stejný soubor, příklad je uveden níže,
[email protected]:~# cp -i /etc/passwd /mnt/backup/ cp: overwrite '/mnt/backup/passwd'? y [email protected]:~#
Ve výše uvedeném příkazu musíte ručně zadat „y“, aby bylo možné kopírovat
Příklad:4) Podrobný výstup během příkazu kopírování (-v)
Pokud chcete podrobný výstup příkazu cp, použijte volbu „-v“, příklad je uveden níže
[email protected]:~# cp -v /etc/fstab /mnt/backup/ '/etc/fstab' -> '/mnt/backup/fstab' [email protected]:~#
V případě, že chcete použít jak interaktivní režim, tak podrobný režim, použijte volbu „-iv“
[email protected]echi:~# cp -iv /etc/fstab /mnt/backup/ cp: overwrite '/mnt/backup/fstab'? y '/etc/fstab' -> '/mnt/backup/fstab' [email protected]:~#
Příklad:5) Kopírování adresáře nebo složky (-r nebo -R)
Chcete-li zkopírovat adresář z jednoho místa na druhé, použijte -r nebo -R možnost v příkazu cp. Předpokládejme, že chceme zkopírovat domovský adresář uživatele linuxtechi do „/mn/backup“,
[email protected]:~# cp -r /home/linuxtechi /mnt/backup/ [email protected]:~#
Ve výše uvedeném příkazu volba -r zkopíruje soubory a adresář rekurzivně.
Nyní ověřte obsah adresáře linuxtechi na cílovém místě,
[email protected]:~# ls -l /mnt/backup/linuxtechi/ total 24 drwxr-xr-x 2 root root 4096 Feb 3 17:41 data -rw-r--r-- 1 root root 7 Feb 3 17:41 file_1.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_2.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_3.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_4.txt -rw-r--r-- 1 root root 7 Feb 3 17:41 file_5txt -rw-r--r-- 1 root root 0 Feb 3 17:41 file_5.txt [email protected]:~#
Příklad:6) Archivujte soubory a adresář během kopírování (-a)
Při kopírování adresáře pomocí příkazu cp obecně používáme volbu -r nebo -R, ale místo volby -r můžeme použít '-a', která archivuje soubory a adresář během kopírování, příklad je uveden níže,
[email protected]:~# cp -a /home/linuxtechi /mnt/backup/ [email protected]:~# ls -l /mnt/backup/linuxtechi/ total 24 drwxr-xr-x 2 root root 4096 Feb 3 17:41 data -rw-r--r-- 1 root root 7 Feb 3 17:39 file_1.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_2.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_3.txt -rw-r--r-- 1 root root 7 Feb 3 17:39 file_4.txt -rw-r--r-- 1 root root 7 Feb 3 17:40 file_5txt -rw-r--r-- 1 root root 0 Feb 3 17:39 file_5.txt [email protected]:~#
Příklad:7) Kopírujte pouze v případě, že je zdrojový soubor novější než cílový soubor (-u)
Mohou nastat některé scénáře, kdy budete chtít soubory zkopírovat, pouze pokud jsou zdrojové soubory novější než cílové. Toho lze snadno dosáhnout pomocí „-u ” v příkazu cp.
V příkladu:6 jsme zkopírovali domovský adresář linuxtechi do složky /mnt/backup, v domovské složce linuxtechi máme 5 souborů txt, pojďme si jich pár upravit a pak zkopírovat všechny soubory txt pomocí „cp -u“.
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# echo "LinuxRocks" >> file_1.txt [email protected]:/home/linuxtechi# echo "LinuxRocks" >> file_4.txt [email protected]:/home/linuxtechi# cp -v -u file_*.txt /mnt/backup/linuxtechi/ 'file_1.txt' -> '/mnt/backup/linuxtechi/file_1.txt' 'file_4.txt' -> '/mnt/backup/linuxtechi/file_4.txt' [email protected]:/home/linuxtechi#
Příklad:8) Nepřepisujte existující soubor během kopírování (-n)
Existují některé scénáře, kdy nechcete při kopírování přepisovat existující cílové soubory. To lze provést pomocí volby ‚-n‘ v příkazu ‚cp‘
[email protected]:~# cp -i /etc/passwd /mnt/backup/ cp: overwrite '/mnt/backup/passwd'?
Jak můžete vidět ve výše uvedeném příkazu, vyzve nás k přepsání existujícího souboru, pokud použijete -n, nevyzve nás k přepsání a také nepřepíše existující soubor.
[email protected]:~# cp -n /etc/passwd /mnt/backup/ [email protected]:~#
Příklad:9) Vytváření symbolických odkazů pomocí příkazu cp (-s)
Předpokládejme, že chceme vytvořit symbolický odkaz na soubor namísto kopírování pomocí příkazu cp, pro takové scénáře použijte volbu „-s“ v příkazu cp, příklad je uveden níže
[email protected]:~# cp -s /home/linuxtechi/file_1.txt /mnt/backup/ [email protected]:~# cd /mnt/backup/ [email protected]:/mnt/backup# ls -l file_1.txt lrwxrwxrwx 1 root root 27 Feb 5 18:37 file_1.txt -> /home/linuxtechi/file_1.txt [email protected]:/mnt/backup#
Příklad:10) Vytvoření pevného odkazu pomocí příkazu cp (-l)
Pokud chcete vytvořit pevný odkaz na soubor místo zkopírování pomocí příkazu cp, použijte volbu „-l“. příklad je uveden níže,
[email protected]:~# cp -l /home/linuxtechi/devops.txt /mnt/backup/ [email protected]:~#
Jak víme v pevném odkazu, zdrojový a propojený soubor budou mít stejná čísla inodů, ověřte to pomocí následujících příkazů,
[email protected]:~# ls -li /mnt/backup/devops.txt 918196 -rw-r--r-- 2 root root 37 Feb 5 20:02 /mnt/backup/devops.txt [email protected]:~# ls -li /home/linuxtechi/devops.txt 918196 -rw-r--r-- 2 root root 37 Feb 5 20:02 /home/linuxtechi/devops.txt [email protected]:
Příklad:11) Kopírování atributů ze zdroje do cíle (–pouze atributy)
Pokud chcete zkopírovat pouze atributy ze zdroje do cíle pomocí příkazu cp, použijte volbu „–pouze atributy ”
# cp --attributes-only /home/linuxtechi/distributions.txt /mnt/backup/ # ls -l /home/linuxtechi/distributions.txt -rw-r--r-- 1 root root 41 Feb 5 19:31 /home/linuxtechi/distributions.txt # ls -l /mnt/backup/distributions.txt -rw-r--r-- 1 root root 0 Feb 5 19:34 /mnt/backup/distributions.txt #
Ve výše uvedeném příkazu jsme zkopírovali soubor distribution.txt z domovského adresáře linuxtechi do složky /mnt/backup, pokud jste si všimli, zkopírují se pouze atributy a obsah je přeskočen. Velikost souboru distribution.txt ve složce /mn/backup je nula bajtů.
Příklad:12) Vytvoření zálohy existujícího cílového souboru během kopírování (–záloha)
Výchozí chování příkazu cp je přepsat soubor na cíli, pokud stejný soubor existuje, pokud chcete během operace kopírování vytvořit zálohu existujícího cílového souboru, použijte ‘–backup ‘ možnost, příklad je uveden níže,
[email protected]:~# cp --backup=simple -v /home/linuxtechi/distributions.txt /mnt/backup/distributions.txt '/home/linuxtechi/distributions.txt' -> '/mnt/backup/distributions.txt' (backup: '/mnt/backup/distributions.txt~') [email protected]:~#
Pokud jste si všimli, záloha byla vytvořena a na konec souboru byl připojen symbol vlnovky. možnost zálohování přijměte následující parametry
- žádné, vypnuto – nikdy neprovádějte zálohy
- číslované, t – provádějte číslované zálohy
- existující, nula – očíslované, pokud existují číslované zálohy, jinak jednoduché
- jednoduché, nikdy – vždy provádějte jednoduché zálohy
Příklad:13) Zachovat režim, vlastnictví a časová razítka při kopírování (-p)
Pokud chcete při kopírování zachovat atributy souboru, jako je režim, vlastnictví a časová razítka, použijte volbu -p v příkazu cp, příklad je ukázán níže,
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# cp -p devops.txt /mnt/backup/ [email protected]:/home/linuxtechi# ls -l devops.txt -rw-r--r-- 1 root root 37 Feb 5 20:02 devops.txt [email protected]:/home/linuxtechi# ls -l /mnt/backup/devops.txt -rw-r--r-- 1 root root 37 Feb 5 20:02 /mnt/backup/devops.txt [email protected]:/home/linuxtechi#
Příklad:14) Při kopírování nesledujte symbolické odkazy ve Zdroji (-P)
Pokud nechcete při kopírování sledovat symbolické odkazy zdroje, použijte volbu -P v příkazu cp, příklad je uveden níže
[email protected]:~# cd /home/linuxtechi/ [email protected]:/home/linuxtechi# ls -l /opt/nix-release.txt lrwxrwxrwx 1 root root 14 Feb 9 12:28 /opt/nix-release.txt -> os-release.txt [email protected]:/home/linuxtechi# [email protected]:/home/linuxtechi# cp -P os-release.txt /mnt/backup/ [email protected]:/home/linuxtechi# ls -l /mnt/backup/os-release.txt -rw-r--r-- 1 root root 35 Feb 9 12:29 /mnt/backup/os-release.txt [email protected]:/home/linuxtechi#
Poznámka: Výchozí chování příkazu cp je při kopírování následovat symbolické odkazy ve zdroji.
Příklad:15) Zkopírujte soubory a adresář násilně pomocí volby -f
Mohou nastat některé scénáře, kdy stávající cílový soubor nelze otevřít a odstranit. A pokud máte zdravý soubor, který lze zkopírovat místo existujícího cílového souboru, použijte příkaz cp spolu s volbou -f
[email protected]:/home/linuxtechi# cp -f distributions.txt /mnt/backup/ [email protected]:/home/linuxtechi#
Příklad:16) Zkopírujte řídké soubory pomocí možnosti sparse v příkazu cp
Sparse je běžný soubor, který obsahuje dlouhou sekvenci nula bajtů, která nespotřebovává žádný fyzický blok disku. Jednou z výhod řídkého souboru je, že nespotřebovává mnoho místa na disku a operace čtení tohoto souboru by byla poměrně rychlá.
Předpokládejme, že máme řídký cloudový obrázek s názvem „ubuntu-cloud.img“
[email protected]:/home/linuxtechi# du -sh ubuntu-cloud.img 12M ubuntu-cloud.img [email protected]:/home/linuxtechi# cp --sparse=always ubuntu-cloud.img /mnt/backup/ [email protected]:/home/linuxtechi# du -sh /mnt/backup/ubuntu-cloud.img 0 /mnt/backup/ubuntu-cloud.img [email protected]:/home/linuxtechi#
Při použití parametru sparse v příkazu cp
lze použít různé možnosti- sparse=auto
- sparse-always
- řídký=nikdy
To je z tohoto článku vše, doufám, že vám pomůže lépe porozumět příkazu cp. Podělte se prosím o své názory a komentáře