Jak kopiować pliki i katalogi w Linux [14 przykładów poleceń CP]

Jak kopiować pliki i katalogi w Linux [14 przykładów poleceń CP]

Krótko: W tym łatwym do naśladowaniu przewodniku omówimy kilka praktycznych przykładów polecenia CP. Po zastosowaniu tego przewodnika użytkownicy będą mogli łatwo kopiować pliki i katalogi w Linux za pomocą interfejsu wiersza poleceń.

Jako użytkownicy Linux od czasu do czasu wchodzimy w interakcje z plikami i katalogami. Jedną z powszechnych operacji, które wykonują użytkownicy, jest kopiowanie plików i katalogów. Z pewnością możemy użyć graficznego menedżera plików do wykonywania operacji kopiowania. Jednak większość użytkowników Linux woli korzystać CP polecenie ze względu na jego prostotę i bogatą funkcjonalność.

W tym przyjaznym dla początkujących przewodniku dowiemy się o CP Komenda. Jak sama nazwa wskazuje, Polecenie CP służy do kopiowania plików i katalogów na danej ścieżce.

W tym przewodniku zrozumiemy użycie Polecenie CP Korzystając z praktycznych przykładów, które można stosować na co dzień.

Więc zacznijmy.

Spis treści

1
  • Składnia polecenia CP
  • 1. Jak skopiować plik w Linux
  • 2. Pokaż Kopiuj postęp polecenia
  • 3. Jak skopiować wiele plików do katalogu
  • 4. Jak uniknąć zastąpienia pliku
  • 5. Jak zastąpić plik za pomocą potwierdzenia
  • 6. Zastąp plik tylko wtedy, gdy źródło jest nowsze
  • 7. Jak tworzyć kopię zapasową pliku przed nadpisaniem
  • 8. Jak wymusić kopię do zastąpienia pliku
  • 9. Jak usunąć plik docelowy przed kopiowaniem
  • 10. Jak utworzyć plik twardego linku zamiast kopiowania
  • 11. Jak utworzyć plik miękkiego linku zamiast kopiowania
  • 12. Jak zachować atrybuty pliku podczas kopiowania
  • 13. Jak rekurencyjnie wykonywać operacje kopiowania
  • 14. Jak skopiować wiele katalogów

Składnia polecenia CP

Składnia CP Polecenie jest identyczne z innymi poleceniami Linux. Na wysokim poziomie jest dzielony na dwie części - opcje I argumenty:

$ cp [opcje] $ cp [opcje]…  

W powyższej składni kwadratowe nawiasy ([]) reprezentują opcjonalne argumenty, podczas gdy wsporniki kątowe () reprezentują obowiązkowe argumenty.

1. Jak skopiować plik w Linux

Jedno z podstawowych zastosowań CP Poleceniem jest skopiowanie pliku do bieżącego katalogu. Przez większość czasu użytkownicy wykonują tę operację, aby wykonać kopię zapasową ważnej konfiguracji.

Na przykład często tworzymy kopię zapasową pliku/etc/ssh/sshd_config przed aktualizacją konfiguracji SSH.

Aby zrozumieć użycie, utwórzmy prosty plik:

$ Touch File-1.tekst 

Następnie utwórz kopię pliku za pomocą następującego polecenia:

$ CP Plik-1.plik txt-2.tekst 
Kopiuj plik w Linux

2. Pokaż Kopiuj postęp polecenia

W poprzednim przykładzie użyliśmy polecenia LS, aby sprawdzić, czy operacja kopiowania pliku powiodła się. Jednak użycie jeszcze jednego polecenia nie ma sensu, aby zweryfikować wynik poprzednich poleceń.

W takich przypadkach możemy włączyć tryb wetbose za pomocą -v opcja, która zapewnia diagnostykę każdego przetworzonego pliku.

Zróbmy kopię Plik-1.tekst Plik za pomocą następującego polecenia:

$ cp -v plik -1.plik txt-3.tekst 
Pokaż wyjście kopii

W powyższym wyjściu strzałka reprezentuje kopiowany plik. Argumentem lewym bocznym jest plik źródłowy, podczas gdy argument po prawej stronie jest plik docelowy.

3. Jak skopiować wiele plików do katalogu

Jak dotąd pracowaliśmy z jednym plikiem i obecnym katalogiem roboczym. Jednak w prawdziwym środowisku produkcyjnym musimy pracować z dużą liczbą plików. Jednym z typowych przypadków użycia w takich środowiskach jest skopiowanie wielu plików do jednego katalogu.

Oczywiście możemy wiele razy wykonać polecenie CP, aby je osiągnąć, ale to nie będzie najskuteczniejszy sposób. Aby skutecznie wykonać taką operację, możemy użyć alternatywnej składni polecenia CP.

Po pierwsze, utwórz nowy katalog o nazwie Dir-1:

$ mkdir dir-1 

Teraz skopiujmy wszystkie trzy pliki do Dir-1 katalog za pomocą pojedynczego polecenia:

$ cp -v plik -1.plik txt-2.plik txt-3.TXT Dir-1 
Skopiuj wiele plików w Linux

Powyższe wyjście pokazuje, że wszystkie pliki zostały skopiowane do Dir-1 informator. Należy również zauważyć, że aby użyć tej alternatywnej składni, katalog musi być już obecny i musi być ostatnim argumentem polecenia.

4. Jak uniknąć zastąpienia pliku

Domyślnie, CP Polecenie zastępuje plik docelowy, co oznacza, że ​​zastąpi plik, jeśli istnieje w miejscu docelowym o tej samej nazwie. Możemy jednak wyłączyć to domyślne zachowanie za pomocą -N opcja.

Aby to zrozumieć, spróbujmy zastąpić istniejący plik:

$ cp -n -v plik -1.plik txt-2.tekst 

W tym przykładzie użyliśmy -v opcja zilustrowania, że Plik-2.tekst Plik nie został zastąpiony.

5. Jak zastąpić plik za pomocą potwierdzenia

W poprzednim przykładzie widzieliśmy, jak uniknąć zastąpienia pliku docelowego. Czasami jednak chcemy zastąpić miejsce docelowego pliku w bezpieczniejszy sposób.

W takich przypadkach możemy użyć -I opcja polecenia, aby operacja kopiowania była interaktywna. Ta opcja pokazuje komunikat ostrzegawczy i czeka na potwierdzenie użytkownika przed zastąpieniem pliku.

Aby to zilustrować, spróbujmy zastąpić istniejący plik:

$ cp -i plik -1.plik txt-2.tekst CP: OPIRTIRE „Plik-2.tekst'? 

Jak widzimy, polecenie czeka na potwierdzenie. Podobnie jak inne polecenia Linux, możemy użyć „y” kontynuować lub 'N' Aby przerwać operację.

To domyślne nieinteraktywne zachowanie CP Dowództwo nie jest bardzo bezpieczne. Istnieją szanse, że użytkownik może pomyłać ważną konfigurację. Stąd niektóre rozkłady Linux domyślnie wymuszają zachowanie interaktywne za pomocą polecenia Alias:

$ alias cp = "cp -i" 

6. Zastąp plik tylko wtedy, gdy źródło jest nowsze

W poprzednim przykładzie widzieliśmy, jak korzystać z trybu interaktywnego. Czasami jednak użytkownik może przypadkowo zastąpić nowszy plik.

Aby uniknąć takich przypadków podatnych na błędy, możemy użyć -u Opcja, która próbuje kopiować operację tylko wtedy, gdy źródło jest nowsze niż miejsce docelowe lub jeśli plik nie jest obecny w miejscu docelowym.

Najpierw zaktualizuj znacznik czasu pliku źródłowego:

$ Touch -t 10101010 Plik -1.txt $ ls -l plik -1.tekst 

W powyższym przykładzie użyliśmy -T opcja polecenia dotykowego, aby ustawić znacznik czasu pliku na 10-październik-2010.

Następnie zaktualizujmy znacznik czasu pliku docelowego do bieżącego czasu:

$ Touch File-2.tekst 

Teraz spróbujmy wykonać operację kopiowania za pomocą -u opcja:

$ cp -u -v plik -1.plik txt-2.tekst 

Tutaj widzimy, że operację kopiowania nie próbowano, ponieważ plik docelowy jest nowszy niż źródło.

Na koniec zamieńmy argumenty źródłowe i docelowe i wykonajmy operację kopiowania:

$ cp -u -v plik -2 -2.plik txt-1.tekst 

W powyższym wyjściu możemy zauważyć, że operacja kopiowania się powiedzie, ponieważ plik źródłowy jest nowszy niż miejsce docelowe.

Zastąp plik tylko wtedy, gdy źródło jest nowsze

7. Jak tworzyć kopię zapasową pliku przed nadpisaniem

Możemy poinstruować CP polecenie, aby wykonać kopię zapasową pliku docelowego przed jego zastąpieniem. Aby to osiągnąć --kopia zapasowa opcja, która wykonuje zautomatyzowane kopie zapasowe.

$ cp - -backup = numerowany -v plik -1.plik txt-2.tekst 

W tym przykładzie wykorzystaliśmy numerowane zasady tworzenia kopii zapasowych. Niniejsza zasada wykorzystuje liczby przyrostowe w nazwach plików kopii zapasowej.

Aby to zrozumieć, wykonajmy to samo polecenie wiele razy i obserwuj wyjście:

$ cp - -backup = numerowany -v plik -1.plik txt-2.txt $ cp - -backUp = numerowany -v plik -1 -1.plik txt-2.txt $ cp - -backUp = numerowany -v plik -1 -1.plik txt-2.tekst 
Plik kopii zapasowej przed nadpisaniem

8. Jak wymusić kopię do zastąpienia pliku

W kilku poprzednich przykładach widzieliśmy, jak zastąpić plik w bezpieczniejszy sposób. Jednak w niektórych rzadkich przypadkach wymóg jest zastąpienie pliku. Nie ma jednak gwarancji, że operacja odniesie sukces za każdym razem.

Na przykład operacja kopiowania nie powiedzie się, jeśli plik docelowy nie ma uprawnień do zapisu. Zilustrujmy to przykładem.

Najpierw zmień uprawnienia pliku docelowego:

$ CHMOD 444 Plik-2.txt $ ls -l plik -2.tekst 

Teraz spróbujmy zastąpić Plik-2.tekst plik:

$ CP Plik-1.plik txt-2.tekst 

W powyższym wyjściu widzimy, że polecenie nie powiodło.

Aby przezwyciężyć to ograniczenie, możemy użyć -F opcja, która usuwa pliki docelowe i próbuje operacji kopiowania, jeśli nie można otworzyć pliku docelowego.

Teraz użyjmy -F opcja, aby mocno zastąpić plik:

$ cp -f -v plik -1.plik txt-2.tekst 
Wymuszaj kopię, aby zastąpić plik

9. Jak usunąć plik docelowy przed kopiowaniem

W poprzednim przykładzie widzieliśmy, jak usunąć plik docelowy, jeśli wystąpił błąd podczas jego obsługi. Czasami jednak wymaganiem jest najpierw usunięcie pliku docelowego, a następnie wykonanie operacji kopiowania.

Aby spełnić taki wymóg, możemy użyć --Usuń Destination opcja.

$ CP--Remove-Destination -v Plik-1.plik txt-2.tekst 
Usuń plik docelowy przed kopiowaniem

W powyższym wyjściu możemy zobaczyć, że polecenie CP najpierw usuwa plik docelowy, a następnie wykonuje operację kopiowania.

10. Jak utworzyć plik twardego linku zamiast kopiowania

Możemy utworzyć twardy link zamiast tworzyć nową kopię pliku źródłowego. Ta opcja odgrywa ważną rolę, gdy istnieje niedobór miejsca na dysku.

Więc użyjmy -L Opcja utworzenia twardego linku:

$ cp -l -v plik -1.plik txt-4.tekst 

Teraz sprawdźmy liczby INODE obu plików, aby zweryfikować twarde linki:

$ ls -i1 plik -1.plik txt-4.tekst 
Utwórz plik Hard Link zamiast kopiowania

W powyższym wyjściu liczby w pierwszej kolumnie reprezentują liczby iNODE.

11. Jak utworzyć plik miękkiego linku zamiast kopiowania

W podobny sposób możemy utworzyć miękki link zamiast tworzyć nową kopię za pomocą -S opcja, jak pokazano poniżej:

$ cp -s -v plik -1.plik txt-5.tekst 

Teraz sprawdźmy, czy link symboliczny został poprawnie utworzony:

$ ls -l plik -5.tekst 
Utwórz miękki link zamiast kopiowania

W powyższym wyjściu ostatnie kolumny reprezentują symboliczny związek łącza.

12. Jak zachować atrybuty pliku podczas kopiowania

Istnieją różne atrybuty powiązane z plikiem, takie jak czas dostępu, czas modyfikacji, uprawnienia itp. Domyślnie te atrybuty nie są zachowane podczas kopiowania pliku. Aby zastąpić to domyślne zachowanie, możemy użyć -P opcja.

Aby to zrozumieć, najpierw zaktualizuj znacznik czasu Plik-1.tekst:

$ Touch -t 10101010 Plik -1.tekst 

Teraz utwórzmy kopię tego pliku, zachowując wszystkie jego atrybuty:

$ cp -p -v plik -1.plik txt-6.tekst 

Na koniec zweryfikuj znacznik czasu Plik-6.tekst plik:

$ ls -l plik -6.tekst 
Zachowaj atrybuty pliku podczas kopiowania

13. Jak rekurencyjnie wykonywać operacje kopiowania

Do tej pory widzieliśmy, jak skopiować pojedynczy plik. Jednak często musimy skopiować wszystkie pliki i podwodnione danego katalogu.

W takich przypadkach możemy użyć trybu rekurencyjnego albo za pomocą -R Lub -R opcja.

Utwórzmy więc katalog i dodajmy pod nim kilka plików i podwodnych:

$ mkdir -p dir-1/dir-2 $ touch Dir-1/File-1.TXT DIR-1/DIR-2/FILE-2.tekst 

Następnie zweryfikuj, że struktura katalogu została poprawnie utworzona:

$ Tree Dir-1 

Teraz skopiujmy katalog Dir-1 rekurencyjnie za pomocą następującego polecenia:

$ cp -r -v dir -1 dir -3 

Na koniec sprawdź, czy wszystkie pliki i podwozie zostały pomyślnie skopiowane:

$ Tree Dir-3 
Rekurencyjnie kopiuj pliki

14. Jak skopiować wiele katalogów

Podobnie jak pliki, możemy kopiować wiele katalogów rekurencyjnych za pomocą pojedynczego polecenia. Jednak w celu osiągnięcia tego katalogu docelowego musi być już obecny i musi to być ostatni argument w poleceniu. Zrozummy to przykładem.

Najpierw utwórz katalog nowy katalog:

$ mkdir dir-4 

Teraz skopiujmy Dir-1 I Dir-3 katalogi do Dir-4 Katalog używa poniższego polecenia:

$ cp -r -v dir-1 dir-3 dir-4 

W podobny sposób możemy użyć -T opcja polecenia, aby osiągnąć ten sam wynik. Ta opcja pozwala nam określić katalog docelowy. Więc możemy również użyć go jako pierwszego argumentu:

$ cp -t dir -4 -r -v dir -1 dir -3 
Skopiuj wiele katalogów

W tym artykule omówiliśmy, jak kopiować pliki i katalogi za pomocą Polecenie CP. Początkujący mogą odnosić się do tych przykładów w codziennym życiu podczas pracy z systemami Linux.

Może ci się spodobać również:

  • Jak używać polecenia „MV” w Linux [9 przydatnych przykładów]
  • Postęp - Pokaż procent skopiowanych danych dla poleceń (CP, MV, DD, TAR)
  • Monitoruj postępy (kopia/kopia zapasowa/kompresja) za pomocą polecenia „PV”
  • Zaawansowane polecenie kopiowania - pokazuje pasek postępu podczas kopiowania dużych plików/folderów w Linux

Czy znasz jakikolwiek inny najlepszy przykład polecenia CP w Linux? Daj nam znać swoje poglądy w komentarzach poniżej.