Hvordan kan jeg kopiere filer i en mappe i en annen mappe på Linux -terminalen

Hvordan kan jeg kopiere filer i en mappe i en annen mappe på Linux -terminalen
Når du trenger å kopiere innholdet i en katalog til en annen, i tilfelle av Linux, er det mange verktøy til din disposisjon. Hvilken du skal bruke? Det avhenger av situasjonen og personlig preferanse. I denne artikkelen vil vi se på måter du kan kopiere filinnhold fra en mappe til en annen i terminalen. Det vil inneholde noen av de populære valgene for forskjellige situasjoner.

Filkopiering i terminalen

Å kopiere innholdet i en katalog til en annen er en veldig enkel oppgave. Du har imidlertid mange muligheter til å gjøre det. Linux er velsignet med mange verktøy for å manipulere filer og kataloger gjennom forskjellige handlinger.

Alle trinnene er demonstrert på Ubuntu 18.04.1. Først, la oss lage en håndfull dummy -filer å jobbe med.

$ mkdir -v dir_a

La oss nå lage dummy -filene ved hjelp av berøring.

$ Touch Dummy 1… 10

La oss opprette en annen mappe i DIR_A med en håndfull dummy -filer.

$ mkdir -v dir_b
$ Touch Dummy 1… 10

Nå ser hele strukturen i katalogen Dir_a slik.

$ tre Dir_a

CP -kommando

De CP Kommandoen er langt på vei det vanligste verktøyet for å kopiere filer. Det er et verktøy som kommer som standard med et hvilket som helst Linux -system. Kopiering av filer og kataloger er det eneste formålet med CP. Den støtter et bredt spekter av funksjoner.

Dette er den grunnleggende strukturen til CP kommando.

$ cp

La oss for eksempel lage en kopi av dummy1 fil med navnet dummy1_copy.

$ cp dummy1 dummy1_copy

La oss nå prøve å kopiere flere filer samtidig. For en slik operasjon krever CP at destinasjonen skal være en katalog. Her skal jeg bruke jokertegnuttrykk for å ta tak i alt dummy filer og legg dem inn i ~/Nedlastinger katalog.

$ cp dummy* ~/nedlastinger

Hva med å kopiere en katalog?

$ cp -vr dir_a dir_a_copy

Her brukte vi to forskjellige flagg. La oss ha en rask oversikt over dem.

  • -R: står for en tilbakevendende Kopi (inkludert skjult fil (er)). Må-ha flagg hvis kopiering innebærer en hel katalog eller mer.
  • -V: står for verbose. CP -verktøyet vil sende ut hver eneste handling den utfører.

Ønsker å følge de symbolske koblingene? Legg til "-l" -flagget.

$ cp -lvr

La oss si at destinasjonskatalogen allerede har en fil med samme navn. Hvis du vil unngå å overskrive, bruk "-n" -flagget. Det vil sikre at i tilfelle konflikt, vil ikke CP overskrive filen.

$ cp -nv

Hvis du utfører en sensitiv kopi/lim inn handling, er det bedre å ha den fineste kontrollen over hva som skjer, riktig? I et slikt tilfelle, bruk "-i" -flagget. Det står for en interaktiv modus der CP vil be om bekreftelse hver gang en konflikt oppstår.

$ cp -i

Hvis du er mer interessert, er mannsiden alltid en av de beste dokumentene. Lær mer om CP.

$ mann cp

MV -kommando

MV -verktøyet ligner på CP -verktøyet. I stedet for å kopiere, flytter MV -filer og kataloger imidlertid. Sammenlignet med CP, er det enklere.

Kommandostrukturen til MV ligner på CP.

$ mv

Å flytte innholdet i dir_a til dir_a_copy, Kjør følgende kommando.

$ mv -v dir_a/ dir_a_copy

Her er "-v" -flagget for verbose modus. Hvis du vil flytte bare innholdet i DIR_A, bruk følgende i stedet. I dette tilfellet må målkatalogen eksistere på forhånd.

$ mv -v dir_a/* dir_a_copy

MV -verktøyet har ikke mye å jobbe med. For alle tilgjengelige alternativer, sjekk ut mannssiden.

$ mann mv

Rsync -kommando

Dette er et av de mest populære og kraftige verktøyene for filkopiering, brukt mest til sikkerhetskopi. Den har muligheten til å kopiere filer over en ekstern tilkobling. I motsetning til CP og MV, kommer det også med massevis av avanserte filkopieringsalternativer som tilbyr den største tilpasningen av dens oppførsel.

Rsync er stort sett kjent for sin delta-overføringsalgoritme som dramatisk reduserer datamengden som må byttes. Når det gjelder ekstern synkronisering, sparer dette mye båndbredde.

Rsync kommer vanligvis ikke forhåndsinstallert i noen Linux-distro. På grunn av sin popularitet er den imidlertid nå tilgjengelig på alle de store Linux -distrosene. Bruk PKG -er.org for å finne ut Rsync -pakken for din distro. Forutsatt at du fikk Rsync installert, la oss komme i gang.

Først den grunnleggende kommandostrukturen til Rsync. Det er ganske likt CP.

$ rsync

Før du kommer i gang, er her en håndfull populære Rsync -argumenter.

  • -v: Verbose -modus, send ut uansett hvilken handling som utføres på konsollskjermen.
  • -v: Verbose -modus med flere detaljer
  • -r: Rekursiv modus, må være til stede hvis kopiering av kataloger
  • -z: Komprimere data
  • -en: Arkivdata
  • -n: Tørrkjøring, skal kjøres i kombinasjon med ordre -modus. Ganske enkelt utgjør handlingene hvis kommandoen skulle løpe for ekte
  • -slett: Slett filen (e) og katalog (er) på destinasjonskatalogen hvis kildekatalogen ikke inneholder dem lenger
  • -No-Whole-fil: Tvinger Rsync til å bruke sin deltaoverføringsalgoritme, uansett hva. Nyttig i scenarier der du må sikre minst mulig dataskriving.
  • -Fjern kilde-filen: Slett kildefil (er) etter kopiering.

La oss sjekke dem ut i aksjon. For det første katalogkopien. Kjør følgende kommando.

$ rsync -vr dir_a/ dir_a_copy

For ytterligere detaljert utdata, la oss bruke "-vv" -flagget.

$ rsync -vv -r dir_a/ dir_a_copy

La oss nå sjekke ut den kule delen av Rsync. Vi diskuterte hvordan Rsync intelligent kopierer bare filene som er endret, og lagrer båndbredde og diskskriv. Det er på tide å sjekke det ut i aksjon. I dette eksemplet vil handlingen bli utført i dir_a katalog.

$ rsync -vv-ingen-hel-fil-dummy* dir_b/

Til tross for at Delta-Transmission er aktivert, kan det hende at Rsync ikke bruker det når du utfører lokal dataoverføring.

La oss nå sjekke ut Dry Run -funksjonen. Før du kjører noen Rsync -kommando for ekte, er det alltid viktig at du tester den ut på forhånd. Det er her det tørre løp kommer inn. Rsync vil sende ut hva som vil skje hvis kommandoen faktisk skulle kjøre.

$ rsync -anvr dir_a/ dir_a_copy

Rsync kan også fungere med eksterne kataloger, ikke noe problem. Alt det trenger er en riktig SSH -forbindelse med SSH -nøkler konfigurert.

$ rsync

Ønsker å utføre en trekkoperasjon? For å sette det i Rsyncs perspektiv, vil Rsync kopiere innholdet i kildekatalogen og deretter slette kildeinnholdet.

$ rsync -v-Fjern kildefiler

Sjekk ut resultatet av operasjonen.

$ tre Dir_a
$ tree dir_a_copy

Siste tanker

CP og Rsync er de vanligste verktøyene du kan bruke til å kopiere filer i en mappe på Linux -terminalen. Begge er også veldig bra for skripting. Bare sørg for å teste funksjonene ut før implementering.

Nyt!