Linux cp-kommando: Mine mest anvendte flag og argumenter

Indeks
  1. -r eller -R: Rekursiv Kopiering
  2. -u: Kopier Kun Når Kilden Er Nyere
  3. -i: Interaktiv Tilstand
  4. -v: Verbose Tilstand
  5. -p: Bevar Attributter

Opdag de nyttige flags til cp-kommandoen i Linux, der forbedrer din filkopiering med muligheder for rekursiv kopiering, bevaring af attributter og interaktiv bekræftelse.

cp-kommandoen på Linux har nogle smarte muligheder, der udvider dens anvendelse. De fleste brugere laver kun almindelig kopiering og gider aldrig udforske de flags, der følger med. Efter at have prøvet nogle af dem, indså jeg, at der er nogle flags, jeg altid bruger for en bedre oplevelse.

-r eller -R: Rekursiv Kopiering

Du kan bruge cp-kommandoen til at kopiere både filer og mapper. Som standard fungerer den kun på filer. Hvis du prøver at bruge den med mapper, vil du få en fejl, der springer kopieringen af mappen over.

cp dirA/ dirB/

Her kommer -r-flagget ind i billedet. Ved at bruge -r-flagget kan du også kopiere mapper og filerne inde i dem.

cp -r dirA/ dirB/

Her kopierer vi hele "dirA/"-mappen til en anden mappe kaldet "dirB/". Du vil bemærke, at "dirA/"-mappen også blev kopieret. Hvis du ikke ønsker det og kun vil kopiere indholdet inde i mappen, skal du tilføje et punktum (.) efter skråstregen, som dette:

cp -r dirA/. dirB/

Hvis du blot ønsker at lave en kopi i samme mappe, kan du i stedet angive et nyt navn som argument.

cp -r dirA/ dir-copy # kopierer mappen og omdøber den

-u: Kopier Kun Når Kilden Er Nyere

En af de mest undervurderede flags for cp-kommandoen er -u. Denne mulighed siger til cp kun at kopiere en fil, hvis kildefilen er nyere end destinationen, eller hvis destinationen endnu ikke findes.

Forestil dig, at du har en mappe fuld af projektfiler, som du sikkerhedskopierer til en anden mappe. At køre en normal rekursiv kopiering hver gang vil overskrive alle filer, selv dem der ikke har ændret sig. Det er spild af I/O og kan, afhængigt af projektets størrelse, bremse tingene betydeligt.

Med -u kan du køre den samme kopibefaling igen og igen, og kun de opdaterede filer vil blive overført. Lad os sige, at du har en "reports/"-mappe, som du synkroniserer ind i "backup/":

cp -ru reports/ backup/

Som set i ovenstående screenshot, lavede jeg et lille eksperiment, som du også kan følge. Den første kørsel vil kopiere alt. Den anden kørsel vil kun kopiere de filer, du har ændret eller oprettet siden den sidste sikkerhedskopi. Hvis ingenting er ændret, vil kommandoen færdiggøre næsten øjeblikkeligt.

-i: Interaktiv Tilstand

Hvis du er glemsom som mig, har du sikkert kørt cp-kommandoen uden at tænke, trykket på Enter og pludselig indset, at du lige har overskrevet en fil, du virkelig ikke ønskede at miste. Som standard vil cp ikke bede om bekræftelse. Den vil bare stille destination filen stille. Det er her -i-flagget kommer til nytte. Det siger cp at spørge, før den overskriver en fil. Hvis en destinationsfil allerede findes, vil cp give dig et simpelt spørgsmål som:

cp: overskrive 'file.txt'?

På dette tidspunkt kan du skrive 'y' for at overskrive den eller 'n' for at springe den over. Her er et eksempel:

cp -i report1.txt reports/
# cp: overskrive 'reports/report1.txt'? n
cp -i report1.txt reports/
# cp: overskrive 'reports/report1.txt'? y

Hvis "reports/report1.txt" allerede findes, vil du blive spurgt, før den bliver erstattet. Uden -i ville filen blive overskrevet uden advarsel. Dette er særligt nyttigt, når du kopierer til placeringer som "/etc/" eller "/var/", hvor en forkert overskrivning kan forårsage betydelige problemer. I tilfælde af, at du vil kopiere en bunke filer, og kun nogle allerede findes i målet, lader -i dig beslutte fra sag til sag.

-v: Verbose Tilstand

-v-flagget er ret almindeligt for Linux-kommandoer. Det aktiverer verbose tilstand, som er nyttig til at se, hvad der sker i baggrunden, når du kører en kommando. For cp-kommandoen specifikt viser -v-flagget, hvad den præcist kopierer. Med -v bliver hver fil, der bliver kopieret, udskrevet til terminalen i formatet:

'source' -> 'destination'

Dette gør det helt klart, hvad der sker bag kulisserne. Lad os se et eksempel:

cp -v report1.txt backup/

For flere filer kan du bruge et wildcard:

cp -v *.txt backup/

Nu har du bekræftelse på, at hver fil rent faktisk gik, hvor du forventede. Når du kopierer filer i batches, giver verbose-flagget dig en løbende log over fremskridtene. Det er også nyttigt til at fange de små fejl i tilfælde af en mislykket kopiering.

-p: Bevar Attributter

Som standard fokuserer cp-kommandoen på at få fat i.

Indholdet af dine filer fra punkt A til punkt B. Men nogle gange er metadata, som tidsstempler, filtilstande og ejerskab, ligeså vigtige som selve filen. Det er, hvad -p flaget handler om: at bevare attributter.

Når du tilføjer -p, vil cp bevare disse attributter. Uden -p får kopierede filer friske tidsstempler og standard ejerskab i destinationen. Med -p forbliver de "kloner" af originalerne både i indhold og metadata. Lad os se det i aktion.

cp -p config.cfg backup/

I tilfælde af rekursiv kopiering:

cp -rp project/ backup/

Denne kommando vil kopiere hele project/ mappen og sikre, at alle filer beholder deres originale attributter. Hvis du arkiverer filer, ønsker du ikke, at de alle viser dagens dato. At bevare de originale tidsstempler hjælper dig med at vide, hvornår ting faktisk ændrede sig.

Der er mange flere flag og argumenter for cp kommandoen. Du kan udforske dem i den officielle manpage. At kende disse kommandovalg gør Linux filnavigation og filhåndtering fra terminalen meget lettere.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Go up