Hur kan jag kopiera filer i en mapp till en annan mapp på Linux Terminal

How Can I Copy Files Folder Into Another Folder Linux Terminal



När du behöver kopiera innehållet i en katalog till en annan, för Linux, finns det gott om verktyg till ditt förfogande. Vilken ska man använda? Det beror på situationen och personliga preferenser. I den här artikeln kommer vi att titta på hur du kan kopiera filinnehåll från en mapp till en annan i terminalen. Det kommer att innehålla några av de populära alternativen för olika situationer.

Filkopiering i terminal

Att kopiera innehållet i en katalog till en annan är en mycket enkel uppgift. Men du har många alternativ att göra det. Linux är välsignat med många verktyg för att manipulera filer och kataloger genom olika åtgärder.







Alla steg visas på Ubuntu 18.04.1. Till att börja med, låt oss skapa en handfull dummy -filer att arbeta med.



$mkdir -vdir_A



Låt oss nu skapa dummy -filer med touch.





$Rördummy{1..10}

Låt oss skapa en annan mapp i dir_A med en handfull dummy -filer.



$mkdir -vdir_B
$Rördummy{1..10}

Nu ser hela strukturen i katalogen dir_A ut så här.

$träddir_A

Cp -kommando

De cp kommando är överlägset det vanligaste verktyget för att kopiera filer. Det är ett verktyg som kommer som standard med alla Linux -system. Kopiering av filer och kataloger är det enda syftet med cp. Den stöder ett brett utbud av funktioner.

Detta är den grundläggande strukturen för cp kommando.

$cp <alternativ> <källa> <destination>

Låt oss till exempel göra en kopia av dummy1 fil med namnet dummy1_copy .

$cpdummy1 dummy1_copy

Låt oss nu försöka kopiera flera filer samtidigt. För en sådan operation kräver cp att destinationen är en katalog. Här kommer jag att använda jokertecken för att fånga alla dummy filer och lägg dem i ~/Nedladdningar katalog.

$cpdummy*~/Nedladdningar

Vad sägs om att kopiera en katalog?

$cp -vrdir_A dir_A_copy

Här använde vi två olika flaggor. Låt oss få en snabb uppdelning av dem.

  • -r: Står för en rekursiv kopiera (inklusive dolda filer). Måste ha flagga om kopiering innebär en hel katalog eller mer.
  • -v: Står för mångordig . CP -verktyget kommer att utföra varje enskild åtgärd som den utför.

Vill du följa de symboliska länkarna? Lägg till -L -flaggan.

$cp -Lvr <källa> <destination>

Låt oss säga att målkatalogen redan har en fil med samma namn. Om du vill undvika att skriva över, använd flaggan -n. Det kommer att säkerställa att cp inte kommer att skriva över filen i händelse av konflikt.

$cp -nv <källa> <destination>

Om du utför en känslig kopierings-/klistra -åtgärd är det bättre att ha den bästa kontrollen över vad som händer, eller hur? Använd i så fall -i -flaggan. Det står för ett interaktivt läge där cp kommer att be om bekräftelse varje gång en konflikt uppstår.

$cp -i <källa> <destination>

Om du är mer intresserad är mansidan alltid en av de bästa dokumentationerna. Läs mer om cp.

$man cp

mv -kommando

MV -verktyget liknar cp -verktyget. Men istället för att kopiera flyttar mv filer och kataloger. Jämfört med cp är det en enklare.

Kommandostrukturen för mv liknar cp.

$mv <alternativ> <källa> <destination>

Att flytta innehållet i dir_A till dir_A_copy , kör följande kommando.

$mv -vdir_A/dir_A_copy

Här är -v -flaggan för mångordig läge. Om du bara vill flytta innehållet i dir_A, använd följande istället. I det här fallet måste målkatalogen finnas på förhand.

$mv -vdir_A/ *dir_A_copy

MV -verktyget har inte mycket att arbeta med. För alla tillgängliga alternativ, kolla in man -sidan.

$man mv

Rsync -kommando

Detta är ett av de mest populära och kraftfulla verktygen för filkopiering, som mest används för säkerhetskopiering. Den har möjlighet att kopiera filer över en fjärranslutning. Till skillnad från cp och mv kommer det också med massor av avancerade filkopieringsalternativ som erbjuder största möjliga anpassning av dess beteende.

Rsync är mest känd för sin delta-överföringsalgoritm som dramatiskt minskar mängden data som behöver utbytas. Vid fjärrsynkronisering sparar detta mycket bandbredd.

Rsync kommer i allmänhet inte förinstallerad i någon Linux-distro. Men på grund av dess popularitet är den nu tillgänglig på alla större Linux -distros. Använda sig av Pkgs.org för att ta reda på rsync -paketet för din distro. Om vi ​​antar att du har installerat rsync, låt oss komma igång.

Först den grundläggande kommandostrukturen för rsync. Det är ganska likt cp.

$rsync<alternativ> <källa> <destination>

Innan du börjar, här är en handfull populära rsync -argument.

  • -v : Ordligt läge, matar ut vilken åtgärd som utförs på konsolskärmen.
  • -vv : Övergripande läge med fler detaljer
  • -r : Rekursivt läge, måste finnas när man kopierar kataloger
  • -Med : Komprimera data
  • -till : Arkivera data
  • -n : Torrkörning, bör köras i kombination med ordagrant läge. Matar helt enkelt ut åtgärderna om kommandot skulle köras på riktigt
  • -radera : Ta bort fil (er) och katalog (er) i målkatalogen om källkatalogen inte innehåller dem längre
  • -ingen-hel-fil : Tvingar rsync att använda sin deltaöverföringsalgoritm, oavsett vad. Användbart i scenarier där du måste säkerställa minsta mängd dataskrivning.
  • –Borttag-källfil : Radera källfiler efter kopiering.

Låt oss kolla in dem i handling. Först katalogkopian. Kör följande kommando.

$rsync-vrdir_A/dir_A_copy

För ytterligare detaljerad utdata, låt oss använda -vv -flaggan.

$rsync-vv -rdir_A/dir_A_copy

Låt oss nu kolla in den coola delen av rsync. Vi diskuterade hur rsync intelligent kopierar endast de filer som ändras, vilket sparar bandbredd och diskskrivning. Det är dags att kolla upp det i handling. I det här exemplet kommer åtgärden att utföras inom dir_A katalog.

$rsync-vv -ingen-hel-fildummy*dir_B/

Trots att deltaöverföring är aktiverat kanske rsync inte tillämpar det när du utför lokal dataöverföring.

Låt oss nu kolla in torrkörningsfunktionen. Innan du kör något rsync -kommando på riktigt är det alltid viktigt att du testar det i förväg. Det är här torrkörningen kommer in. Rsync kommer att mata ut vad som kommer att hända om kommandot faktiskt skulle köras.

$rsync-anvrdir_A/dir_A_copy

Rsync kan också fungera med fjärrkataloger, inga problem. Allt som behövs är en korrekt SSH -anslutning med konfigurerade SSH -nycklar.

$ rsync<alternativ> <local_dir>
<Användarnamn> @<remote_host>:<destination_dir>

Vill du utföra en flyttoperation? För att sätta det i rsyncs perspektiv kommer rsync att kopiera innehållet i källkatalogen och sedan ta bort källinnehållet.

$rsync-v -ta bort källfiler <källa> <destination>

Kolla in resultatet av operationen.

$träddir_A

$träddir_A_copy

Slutgiltiga tankar

Cp och rsync är de vanligaste verktygen du kan använda för att kopiera filer i en mapp på Linux -terminalen. Båda är också riktigt bra för manus. Se bara till att testa funktionerna innan implementeringen.

Njut av!