Kort: I denne lett-å-følge veiledningen vil vi diskutere noen praktiske eksempler på cp-kommandoen. Etter å ha fulgt denne veiledningen, vil brukere enkelt kunne kopiere filer og kataloger i Linux ved å bruke kommandolinjegrensesnittet.
Som Linux-brukere samhandler vi med filer og kataloger fra tid til annen. En vanlig operasjon brukere utfører er kopiering av filer og kataloger. Visst, vi kan bruke en grafisk filbehandling for å utføre kopieringsoperasjonen. Imidlertid foretrekker de fleste Linux-brukere å bruke cp kommando på grunn av sin enkelhet og rike funksjonalitet.
I denne nybegynnervennlige guiden vil vi lære om cp kommando. Som navnet tilsier, cp kommando brukes til å kopiere filer og kataloger på en gitt bane.
Gjennom denne veiledningen vil vi forstå bruken av cp kommando ved hjelp av praktiske eksempler som kan brukes i det daglige.
Så la oss komme i gang.
Innholdsfortegnelse
Syntaksen til cp kommandoen er identisk med andre Linux-kommandoer. På et høyt nivå er den delt i to deler – alternativer og argumenter:
$ cp [ALTERNATIVER]$ cp [ALTERNATIVER] ...
I syntaksen ovenfor, hakeparentesene ([])
representerer de valgfrie argumentene mens vinkelparenteser (<>)
representerer de obligatoriske argumentene.
En av de grunnleggende bruken av cp kommandoen er å kopiere en fil til en gjeldende katalog. Det meste av tiden brukere utfører denne operasjonen for å ta en sikkerhetskopi av den viktige konfigurasjonen.
For eksempel lager vi ofte en sikkerhetskopi av /etc/ssh/sshd_config-filen før du oppdaterer SSH-konfigurasjonen.
For å forstå bruken, la oss lage en enkel fil:
$ touch file-1.txt.
Deretter lager du en kopi av filen ved å bruke følgende kommando:
$ cp fil-1.txt fil-2.txt.
I det forrige eksemplet brukte vi ls kommando for å bekrefte om filkopieringsoperasjonen var vellykket eller ikke. Det er imidlertid ikke fornuftig å bruke en kommando til bare for å bekrefte resultatet av de forrige kommandoene.
I slike tilfeller kan vi aktivere den verbose-modusen ved å bruke -v
alternativet, som gir diagnostikk for hver behandlet fil.
La oss lage en kopi av fil-1.txt fil ved å bruke følgende kommando:
$ cp -v fil-1.txt fil-3.txt.
I utgangen ovenfor representerer pilen filen som kopieres. Argumentet på venstre side er kildefilen, mens argumentet på høyre side er målfilen.
Så langt har vi bare jobbet med en enkelt fil og den gjeldende arbeidskatalogen. Men i det virkelige produksjonsmiljøet må vi jobbe med en stort antall filer. En av de vanligste brukssakene i slike miljøer er å kopiere flere filer til en enkelt katalog.
Selvfølgelig kan vi utføre cp-kommandoen flere ganger for å oppnå den, men det vil ikke være den mest effektive måten. For å utføre en slik operasjon effektivt, kan vi bruke en alternativ syntaks for cp-kommandoen.
Så først, opprette en ny katalog med navnet dir-1:
$ mkdir dir-1.
La oss nå kopiere alle tre filene til dir-1 katalog ved å bruke den enkle kommandoen:
$ cp -v fil-1.txt fil-2.txt fil-3.txt dir-1.
Utdataene ovenfor viser at alle filene har blitt kopiert til dir-1 katalog. Det er også viktig å merke seg at for å bruke denne alternative syntaksen må katalogen allerede være tilstede, og det må være det siste argumentet i kommandoen.
Som standard er cp kommandoen erstatter destinasjonsfilen, noe som betyr at den vil overskrive filen hvis den finnes på destinasjonen med samme navn. Vi kan imidlertid deaktivere denne standardoppførselen ved å bruke -n
alternativ.
For å forstå dette, la oss prøve å overskrive den eksisterende filen:
$ cp -n -v fil-1.txt fil-2.txt.
I dette eksemplet har vi brukt -v
mulighet for å illustrere at fil-2.txt filen er ikke overskrevet.
I forrige eksempel så vi hvordan vi unngår overskriving av målfilen. Noen ganger ønsker vi imidlertid å overskrive fildestinasjonen på en sikrere måte.
I slike tilfeller kan vi bruke -Jeg
alternativet for kommandoen for å gjøre kopieringsoperasjonen interaktiv. Dette alternativet viser advarselsmeldingen og venter på brukerens bekreftelse før filen overskrives.
For å illustrere dette, la oss prøve å overskrive den eksisterende filen:
$ cp -i fil-1.txt fil-2.txt cp: overskrive 'fil-2.txt'?
Som vi kan se, venter kommandoen på bekreftelse. Akkurat som andre Linux-kommandoer kan vi bruke 'y'
for å fortsette eller 'n'
å avbryte operasjonen.
Denne standard ikke-interaktive oppførselen til cp kommandoen er ikke veldig sikker. Det er sjanser for at brukeren kan overskrive en viktig konfigurasjon ved en feiltakelse. Derfor håndhever noen av Linux-distribusjonene den interaktive oppførselen som standard ved å bruke alias kommando:
$ alias cp='cp -i'
I forrige eksempel så vi hvordan du bruker den interaktive modusen. Noen ganger kan imidlertid en bruker overskrive den nyere filen ved et uhell.
For å unngå slike feilutsatte tilfeller kan vi bruke -u
alternativet, som prøver å kopiere bare hvis kilden er nyere enn destinasjonen eller hvis filen ikke er tilstede på destinasjonen.
Først oppdaterer du tidsstemplet til kildefilen:
$ touch -t 10101010 file-1.txt. $ ls -l file-1.txt.
I eksemplet ovenfor har vi brukt -t
alternativet for berøringskommando for å sette tidsstemplet til filen til 10. oktober 2010.
La oss deretter oppdatere tidsstemplet til destinasjonsfilen til gjeldende tid:
$ touch file-2.txt.
La oss nå prøve å utføre kopieringsoperasjoner ved å bruke -u
alternativ:
$ cp -u -v fil-1.txt fil-2.txt.
Her kan vi se at kopieringsoperasjonen ikke er forsøkt fordi målfilen er nyere enn kilden.
Til slutt, la oss bytte kilde- og destinasjonsargumenter og utføre kopieringsoperasjonen:
$ cp -u -v fil-2.txt fil-1.txt.
I utdataene ovenfor kan vi observere at kopieringsoperasjonen lykkes fordi kildefilen er nyere enn destinasjonen.
Vi kan instruere cp kommando for å ta en sikkerhetskopi av målfilen før du overskriver den. For å oppnå dette kan vi bruke --sikkerhetskopiering
alternativet, som utfører automatisk sikkerhetskopiering.
$ cp --backup=nummerert -v fil-1.txt fil-2.txt.
I dette eksemplet har vi brukt den nummererte sikkerhetskopieringspolicyen. Denne policyen bruker inkrementelle tall i sikkerhetskopifilnavnene.
For å forstå dette, la oss utføre den samme kommandoen flere ganger og observere utgangen:
$ cp --backup=nummerert -v fil-1.txt fil-2.txt. $ cp --backup=nummerert -v fil-1.txt fil-2.txt. $ cp --backup=nummerert -v fil-1.txt fil-2.txt.
I de foregående eksemplene så vi hvordan du kan overskrive filen på en sikrere måte. Men i noen sjeldne tilfeller er kravet å overskrive filen. Det er imidlertid ingen garanti for at operasjonen vil lykkes hver gang.
For eksempel vil kopieringsoperasjonen mislykkes hvis målfilen ikke har skrivetillatelsene. La oss illustrere dette med et eksempel.
Først endrer du tillatelsene til målfilen:
$ chmod 444 fil-2.txt. $ ls -l fil-2.txt.
La oss nå prøve å overskrive fil-2.txt fil:
$ cp fil-1.txt fil-2.txt.
I utdataene ovenfor kan vi se at kommandoen har mislyktes med feilen for tillatelse nektet.
For å overvinne denne begrensningen kan vi bruke -f
alternativet, som sletter målfilene og forsøker å kopiere hvis målfilen ikke kan åpnes.
La oss nå bruke -f
mulighet for å overskrive filen kraftig:
$ cp -f -v fil-1.txt fil-2.txt.
I forrige eksempel så vi hvordan du fjerner destinasjonsfilen hvis det oppstår en feil mens du bruker den. Noen ganger er imidlertid kravet å fjerne målfilen først og deretter utføre kopieringsoperasjonen.
For å oppfylle et slikt krav kan vi bruke --fjern-destinasjon
alternativ.
$ cp --remove-destination -v fil-1.txt fil-2.txt.
I utdataene ovenfor kan vi se at cp-kommandoen først fjerner målfilen og deretter utfører kopieringsoperasjonen.
Vi kan lage en hard link i stedet for å lage en ny kopi av kildefilen. Dette alternativet spiller en viktig rolle når det er knapphet på diskplass.
Så la oss bruke -l
mulighet for å lage en hard link:
$ cp -l -v fil-1.txt fil-4.txt.
La oss nå sjekke inodenumrene til begge filene for å bekrefte de harde koblingene:
$ ls -i1 fil-1.txt fil-4.txt.
I utgangen ovenfor representerer tallene i den første kolonnen inodenumrene.
På lignende måte kan vi lage en myk lenke i stedet for å lage en ny kopi ved å bruke -s
alternativ som vist nedenfor:
$ cp -s -v fil-1.txt fil-5.txt.
La oss nå bekrefte at den symbolske lenken er riktig opprettet:
$ ls -l file-5.txt.
I utgangen ovenfor representerer de siste kolonnene den symbolske lenkerelasjonen.
Det er forskjellige attributter knyttet til filen, for eksempel tilgangstid, endringstid, tillatelser osv. Som standard blir ikke disse attributtene bevart under kopiering av filen. For å overstyre denne standardatferden kan vi bruke -s
alternativ.
For å forstå dette må du først oppdatere tidsstemplet til fil-1.txt:
$ touch -t 10101010 file-1.txt.
La oss nå lage en kopi av denne filen ved å bevare alle dens attributter:
$ cp -p -v fil-1.txt fil-6.txt.
Til slutt, verifiser tidsstemplet til fil-6.txt fil:
$ ls -l file-6.txt.
Så langt har vi sett hvordan man kopierer en enkelt fil. Imidlertid må vi ofte kopiere alle filer og underkataloger til den aktuelle katalogen.
I slike tilfeller kan vi bruke den rekursive modusen enten ved å bruke -r
eller -R
alternativ.
Så la oss lage en katalog og legge til noen få filer og underkataloger under den:
$ mkdir -p dir-1/dir-2. $ touch dir-1/fil-1.txt dir-1/dir-2/fil-2.txt.
Deretter kontrollerer du at katalogstrukturen er riktig opprettet:
$ tre dir-1.
La oss nå kopiere katalogen dir-1 rekursivt ved å bruke følgende kommando:
$ cp -r -v dir-1 dir-3.
Til slutt, kontroller at alle filer og underkataloger har blitt kopiert:
$ tre dir-3.
I likhet med filer kan vi kopiere flere kataloger rekursive ved å bruke en enkelt kommando. For å oppnå dette må destinasjonskatalogen allerede være til stede, og det må være det siste argumentet i kommandoen. La oss forstå dette med et eksempel.
Lag først en katalog en ny katalog:
$ mkdir dir-4.
La oss nå kopiere dir-1 og dir-3 kataloger inn i dir-4 katalog ved å bruke kommandoen nedenfor:
$ cp -r -v dir-1 dir-3 dir-4.
På lignende måte kan vi bruke -t
alternativet for kommandoen for å oppnå samme resultat. Dette alternativet lar oss spesifisere destinasjonskatalogen. Så vi kan bruke det som et første argument også:
$ cp -t dir-4 -r -v dir-1 dir-3.
I denne artikkelen diskuterte vi hvordan du kopierer filer og kataloger ved hjelp av cp kommando. Nybegynnere kan referere til disse eksemplene i det daglige livet mens de jobber med Linux-systemer.
Du kommer kanskje også til å like:
Vet du om noen andre beste eksempler på cp-kommandoen i Linux? Gi oss beskjed om dine synspunkter i kommentarene nedenfor.