Ubuntu-kopieeropdracht. Hoe bestanden te kopiëren met de cp-opdracht in Linux. zoek opdracht- en jokertekens voor bestandsnamen

Het kopiëren van bestanden is een van de taken waarmee gebruikers het vaakst worden geconfronteerd persoonlijke computer. Natuurlijk kunt u Bestandsbeheer openen, invoeren de gewenste map en kopieer het bestand met contextmenu- er is niets om over te praten. Maar in dit artikel wil ik graag kijken naar het kopiëren van bestanden in Linux met behulp van de terminal.

Er is niet altijd toegang tot bestandsbeheerder: vanwege diverse storingen grafische schil op thuiscomputer is mogelijk niet beschikbaar en op servers wordt alleen de console-interface gebruikt. Bovendien kopiëren Ubuntu-bestanden via de terminal is veel efficiënter, en u zult het zelf zien. Vandaag zullen we kijken naar meer dan alleen regulier kopiëren met de opdracht cp Linux, maar ook niet helemaal gewoon: gebruiken teer En vinden.

Naam van het hulpprogramma cp is een afkorting voor Copy, wat kopiëren betekent. Met dit hulpprogramma kunt u bestanden en mappen volledig kopiëren.

Syntaxis en opties

Algemene syntaxis cp ziet er zo uit:

$ cp opties bronbestand bestemmingsbestand

Bronbestand $ cp-opties bestemmingsmap/

Na het uitvoeren van de opdracht wordt het bronbestand volledig overgebracht naar het doelbestand. Als er aan het einde een schuine streep wordt opgegeven, wordt het bestand met de oorspronkelijke naam naar de opgegeven map geschreven.

Het hulpprogramma heeft verschillende interessante opties die enorm kunnen helpen bij niet-standaard kopieertaken, dus laten we ze eens bekijken:

  • --alleen attributen- kopieer niet de inhoud van het bestand, maar alleen de toegangs- en eigenaarsvlaggen;
  • -f, --kracht- herschrijven bestaande bestanden;
  • -i, --interactief- vragen of bestaande bestanden moeten worden overschreven;
  • -L- kopieer geen symbolische links, maar waar ze naar verwijzen;
  • -N- overschrijf geen bestaande bestanden;
  • -P- volg niet symbolische verbanden;
  • -R- kopiëren Linux-map recursief;
  • -S- kopieer geen bestanden in Linux, maar maak symbolische links;
  • -u- kopieer het bestand alleen als het is gewijzigd;
  • -X- ga niet verder dan de grenzen van dit bestandssysteem;
  • -P- bewaar eigenaar, tijdstempels en toegangsvlaggen tijdens het kopiëren;
  • -T- beschouw het doelbestand als een map en kopieer het bronbestand naar deze map.

Voorbeelden van het kopiëren van bestanden in Linux

Nu u de basisopties kent, kunt u doorgaan met oefenen. We willen bijvoorbeeld een bepaalde afbeelding kopiëren thuismap naar de submap afbeeldingen:

cp ~/pic.png ~/pictures/

Of we kunnen expliciet de naam van de nieuwe afbeelding opgeven:

cp ~/pic.png ~/pictures/wallpaper.png

Mappen worden gekopieerd met behulp van een sleutel -R:

cp -R ~/map ~/Documenten/

Na het uitvoeren van deze kopieeropdracht wordt de map ~/ gekopieerd naar de map ~/Documents. Het belangrijkste is om niet te vergeten een schuine streep aan het einde van de uitdrukking te plaatsen of de optie te gebruiken -T. Anders wordt de map ~/documents overschreven.

Standaardopdracht cp Linux overschrijft bestaande bestanden of mappen, maar u kunt het hulpprogramma laten vragen of u elk bestand wilt overschrijven als u niet zeker bent van de opdracht:

cp -i ~/test ~/Documenten/test

Er is ook de tegenovergestelde optie -N, wat betekent "overschrijf nooit bestaande bestanden."

Optie -u nuttig bij volgende geval: u weet of vermoedt dat er een oude versie van het bestand aanwezig is in de map waar het bestand naartoe wordt gekopieerd, dan zal de operator -u deze vervangen door de nieuwe versie:

cp -u ~/test ~/Documenten/test

CP ondersteunt ook speciale karakters vervangingen * En ? . Met de volgende opdracht worden bijvoorbeeld alle bestanden gekopieerd die beginnen met test:

cp ~/test* ~/Documenten/

Als u complexere reguliere expressies moet gebruiken, moet u het hulpprogramma combineren cp Met vinden of egrep.

cp -p ~/test* ~/Documenten/

Om de opdracht gebruiksvriendelijker te maken, kunt u de syntaxis gebruiken krullende beugels. Als u bijvoorbeeld een back-up van een bestand wilt maken, voert u het volgende uit:

$ cp test.conf(,.bak)

Er wordt een bestand met dezelfde naam en extensie gemaakt.bak

Standaard in cp wordt niet weergegeven, wat erg lastig is bij het werken grote bestanden, maar u kunt het eenvoudig bekijken met het hulpprogramma CV.

Bestanden kopiëren met reguliere expressies in Linux

In het hulpprogramma vinden kan worden gebruikt verschillende omstandigheden en reguliere expressies voor het zoeken naar bestanden. Ik schreef al iets over haar in het artikel. We kunnen alles wat we vinden kopiëren met behulp van vinden bestanden door de opdracht voor elk ervan aan te roepen cp. Kopieer bijvoorbeeld alle bestanden in de huidige map die alleen cijfers in de naam bevatten:

vinden . -naam -exec cp() ~/Documenten\

Hier geeft de punt de huidige map en de parameter aan naam specificeert een reguliere expressie. Parameter uitvoerend we specificeren welke opdracht moet worden uitgevoerd op de gedetecteerde bestanden. Symbool {} - vervangt de naam van elk bestand.

Maar niet vinden"Wij zijn de enige die dit kunnen doen. Hetzelfde kan worden verkregen door een lijst met directorybestanden op te vragen in ls, filteren op reguliere expressie egrep en de bestandsnamen één voor één doorgeven aan cp door te gebruiken xargs:

ls -1 ~/ | egrep "" | xargs cp -t ~/Map/

Dat is het niet echt handige manier kopieer Linux-bestanden, maar het is nog steeds mogelijk. Alle bestanden van thuismap met alleen Engelse letters in de naam.

Bestandsinhoud kopiëren in Linux

U kunt niet alleen de bestanden zelf kopiëren, maar ook de inhoud ervan beheren. Lijm bijvoorbeeld meerdere bestanden in één of knip een bestand in meerdere delen. Nutsvoorziening kat gebruikt om de inhoud van een bestand uit te voeren, in combinatie met de uitvoeromleidingsoperatoren van Bash kunt u de inhoud kopiëren Linux-bestand naar een ander bestand. Bijvoorbeeld:

cat-bestand1 > bestand2

Als het bestand niet leeg was, wordt het overschreven. Of we kunnen twee afzonderlijke bestanden samenvoegen tot één:

cat-bestand1 bestand2 > bestand3

Speciaal kopiëren van bestanden in Linux met behulp van tar

Linux is interessant omdat je dezelfde actie op verschillende manieren kunt uitvoeren. Kopiëren in Linux kan ook niet alleen met behulp van cp. Bij het overbrengen systeembestanden naar een andere map, een back-up maken van systeembestanden, enz. Het is belangrijk dat de attributen, waarden van de bestandseigenaar en symbolische links behouden blijven zoals ze zijn, zonder enige wijziging.

Nutsvoorziening cp kan deze taak ook aan? als u de optie opgeeft -P, maar u kunt het archiveringsprogramma gebruiken teer. We maken geen archiefbestanden aan, maar bouwen een tunnel. Het eerste deel van de opdracht verpakt het bestand en verzendt het naar standaard uitvoer, en de ander pakt het onmiddellijk uit in de gewenste map:

tar cf - /var | (cd /mnt/var && tar xvf -)

Hier kopiëren we de inhoud van de map /var volledig naar de map /mnt/var. Op deze manier kun je de Linux-map, absoluut elk of zelfs het hele besturingssysteem kopiëren.

Conclusies

Nu weet je hoe je bestanden in Ubuntu en Linux in het algemeen kunt kopiëren. Zoals u kunt zien, gebeurt dit in de terminal veel sneller en efficiënter dan met behulp van GUI als je het je herinnert noodzakelijke commando's. Als je vragen hebt, stel ze dan in de reacties!

cp - kopieer bestanden en mappen

BEOORDELING

cp [ opties] bestand pad cp [ opties] bestand... catalogus POSIX-opties: [-fiprR] [--] Extra opties POSIX 1003.1-2003: [-HLP] GNU file-utils 4.0-opties (korte vorm): [-abdfilprsuvxPR] [-S ACHTERVOEGSEL] [-V (genummerd,bestaand,eenvoudig)] [--back-up=CONTROLE] [--sparse=WANNEER] [--hulp] [--versie] [--] Aanvullend GNU-opties file-utils 4.1 (korte vorm): [-HLP] [--kopie-inhoud] [--niet behouden] [--antwoord=HOE] [--verwijder-bestemming] [--strip-trailing-slashes] [--doelmap=DIR]

BESCHRIJVING

cp kopieert bestanden (of, indien gevraagd, mappen). U kunt het ene bestand naar het andere kopiëren, gegeven bestand of kopieer zoveel bestanden als u wilt naar een bepaalde map. cp Als het laatste argument een bestaande map is, dan bestand kopieert elk origineel cp naar deze map (met behoud van de namen). Anders, als er slechts twee bestanden worden opgegeven, dan kopieert het eerste bestand naar het tweede. Als er meer dan twee argumenten worden opgegeven die geen opties zijn, en het laatste argument niet de naam van een map is, resulteert dit in een fout.(Dus als /a~-- een directory is, dan zal cp -r /a /b /a kopiëren naar /b/a en /a/x naar /b/a/x in het geval dat /b al bestaat, maar hetzelfde commando kopieert /a naar /b en /a/x naar /b/x als /b niet bestaat, of mislukt als /b een gewoon bestand is). De toegangsrechten tot bestanden en mappen zullen gelijk zijn aan die van de originele bestanden, logisch vermenigvuldigd (AND) met 0777 (met andere woorden, de sticky-, setuid- en setgid-bits worden opnieuw ingesteld in de nieuwe rechten - red.), en er wordt ook rekening mee gehouden rekening houden masker cp(1) gebruiker (tenzij de optie -p is opgegeven). (Maar tijdens een recursieve kopie van mappen krijgen de nieuw aangemaakte mappen tijdelijk de rechten ORed met de waarde S_IRWXU (0700) om het lezen, schrijven en doorzoeken van de nieuw aangemaakte mappen mogelijk te maken.)

Als u een bestand naar zichzelf probeert te kopiëren, gebeurt er niets (behalve de mogelijke foutmelding). Wanneer een bestand naar een ander bestaand bestand wordt gekopieerd, wordt het geopend met de aanroep open(path, O_WRONLY | O_TRUNC). Wanneer er opnieuw wordt gekopieerd aangemaakt bestand

, dan wordt het gemaakt met behulp van de aanroep open(path, O_WRONLY | O_CREAT, mode). Als deze oproepen mislukken, wordt aangenomen dat het bestand bestaat, en geprobeerd het te verwijderen (ontkoppelen), moet u de optie -f opgeven. Als de verwijdering succesvol is, werkt alles zoals het geval is met een nieuw bestand. OPTIES POSIX POSIX heeft vier en een halve optie: -F Verwijdert indien nodig bestaande bestanden waarnaar wordt gekopieerd. (Zie hierboven) -P-i Vraagt ​​of bestaande bestanden waarnaar wordt gekopieerd, moeten worden overschreven. (Het verzoek wordt verzonden naar de standaardfoutuitvoer en het antwoord wordt gelezen standaard invoer . Er wordt alleen gekopieerd als het antwoord positief is). naar het bestand. In het geval dat het instellen van de eigenaar of groep tot een fout leidt, worden de suid- en sgid-bits gewist. (Merk op dat later het originele bestand en de kopie ervan mogelijk zijn verschillende tijden laatste toegang, aangezien de kopieerbewerking toegang tot het bronbestand is). -R Kopieer mappen recursief; correct omgaan met situaties waarin objecten worden aangetroffen die geen gewone bestanden of mappen zijn. (Een kopie van een FIFO- of speciaal bestand zal dus ook een FIFO- of speciaal bestand zijn). -R Kopieer mappen recursief; een aantal acties uitvoeren die niet door de standaard zijn gedefinieerd wanneer objecten worden aangetroffen die geen gewone bestanden of mappen zijn. (Dus de aanwezigheid is toegestaan ​​en zelfs goedgekeurd-r-opties cp als synoniem voor -R. -- Wel het domme gedrag dat die versie vertoont

niet verboden in GNU 4.0.) Als u een bestand naar zichzelf probeert te kopiëren, gebeurt er niets (behalve de mogelijke foutmelding). Wanneer een bestand naar een ander bestaand bestand wordt gekopieerd, wordt het geopend met de aanroep open(path, O_WRONLY | O_TRUNC). Wanneer er opnieuw wordt gekopieerd aangemaakt bestand 2003

Voltooit de lijst met opties. AANVULLEND De POSIX 1003.1-2003-standaard voegt drie opties toe die specificeren hoe symbolische koppelingen moeten worden beheerd. Wanneer een niet-recursieve kopie wordt uitgevoerd, worden symbolische links verwijderd (de objecten waarnaar ze verwijzen worden in plaats van de link zelf genomen - ongeveer). Bij het uitvoeren van een recursieve kopie met de optie -r zijn de resultaten afhankelijk van de implementatie. Bij het uitvoeren van een recursieve kopie met de optie -R: -L-H -P Verwijst naar symbolische koppelingen die zijn opgegeven in de parameterlijst. Verwijst niet naar symbolische koppelingen die u tegenkomt tijdens recursief kopiëren, maar kopieert ze eenvoudigweg.

Derefereert alle symbolische koppelingen, zowel de koppelingen die zijn opgegeven in de parameterlijst als de koppelingen die worden aangetroffen tijdens recursief kopiëren. Verwijst niet naar symbolische koppelingen, gespecificeerd in de parameterlijst of aangetroffen tijdens recursief kopiëren. Kopieert ze gewoon als symbolische links. Er is geen standaardoptie: u moet een van de opties opgeven om het gewenste resultaat te bereiken.

DETAILS VERSIES GNU -R). cp Normaal gesproken worden bestanden in exact dezelfde vorm geschreven als waarin ze zijn gelezen. Zie hieronder voor optie --schaars , wat een uitzondering is. Standaard kopieert cp geen mappen (zie optie weigert meestal het kopiëren van een bestand naar zichzelf, met de volgende uitzondering: als er opties worden gegeven bestand En bestand--kracht cp zal een reservekopie van het bestand maken: normaal of genummerd, zoals u zegt. Dit is handig als u alleen een reservekopie van een bestaand bestand wilt maken voordat u het wijzigt.

Als u een bestand naar zichzelf probeert te kopiëren, gebeurt er niets (behalve de mogelijke foutmelding). Wanneer een bestand naar een ander bestaand bestand wordt gekopieerd, wordt het geopend met de aanroep open(path, O_WRONLY | O_TRUNC). Wanneer er opnieuw wordt gekopieerd Er is geen standaardoptie: u moet een van de opties opgeven om het gewenste resultaat te bereiken.

Standaard worden symbolische koppelingen niet verwijderd. -A,--archief Behoudt waar mogelijk de structuur en kenmerken van de originele bestanden wanneer deze worden gekopieerd (maar behoudt niet de mapstructuur). Gelijk aan instellingsopties. -dpPR-B Zie de bespreking van back-ups hieronder.--kopie-inhoud (sinds file-utils 4.1) File-utils 4.0 doet iets stoms, door te proberen de inhoud van apparaat- en FIFO-bestanden te kopiëren tijdens een recursieve kopie. Gebruik deze optie nooit. Hiermee kan `cp' gewoon blijven hangen bij het lezen van de FIFO of /dev/tty, of de hele schijf vullen door /dev/zero te kopiëren.-D Kopieert symbolische koppelingen als symbolische koppelingen in plaats van de bestanden waarnaar ze verwijzen, en behoudt harde koppelingen tussen bronbestanden in de kopieën. --schaars In file-utils 4.0 was de lange --no-dereference optie een synoniem voor de -d optie, maar in file-utils 4.1 is het een synoniem voor de -P optie, terwijl de -d optie gelijk is aan de --no -dereference --opties behouden =links. -F, Verwijdert bestaande bestanden als er een fout optreedt bij het openen ervan om te lezen en vraagt ​​nooit om bevestiging voordat u dit doet. (Dit gedrag begon met file-utils 4.1. In file-utils 4.0 was deze optie gelijk aan AANVULLEND nieuwe optie --verwijder-bestemming.) (sinds file-utils 4.1) Zie POSIX-beschrijving hierboven.-i, --interactieve. Vraagt ​​of bestaande bestanden moeten worden overschreven reguliere bestanden-l, --link Maakt harde links in plaats van gewone bestanden (geen mappen) te kopiëren.-L, --dereferentie(sinds file-utils 4.1) Zie POSIX-beschrijving hierboven.--no-preserve= ATTRIBUTEN (sinds file-utils 4.1) Slaat de opgegeven attributen niet op. Zie de optie --preserve hieronder.-P, --beschermen(sinds file-utils 4.1) Zie POSIX-beschrijving hierboven. Beschermt de originele bestandsparameters zoals eigenaar, groep, machtigingen en tijdstempels. --behoud= (sinds file-utils 4.1) Hier kan de parameter ATTRIBUTES een van de waarden "mode" (toegangsrechten), "ownership" (eigenaar en groep), "timestamps" (tijdstempels), "links", "all" aannemen "(alle bovenstaande).-P, --geen-dereferentie(sinds file-utils 4.0 ook -P) Vormt de naam van elk bestand dat moet worden gekopieerd door de naam van de map waarnaar het kopieert, toe te voegen aan een schuine streep (/) en de opgegeven volledige naam van het bronbestand. Laatste argument gegeven cp moet de naam zijn van een bestaande map. Met het commando cp --parents a/b/c bestaande_map kopieert u bijvoorbeeld bestand a/b/c naar bestaande_map/a/b/c, waardoor de ontbrekende tussenliggende mappen worden aangemaakt. -R In file-utils 4.1: een synoniem voor de optie -R. In file-utils 4.0: Kopieert mappen recursief, kopieert alle niet-mappen en niet-symbolische koppelingen (d.w.z. FIFO en speciale bestanden), alsof het gewone bestanden zijn. Dit stomme gedrag kan in file-utils 4.1 worden bereikt door de optie --copy-contents op te geven. -R, --recursief Kopieert mappen recursief en beschermt niet-mappen. --antwoord=HOE(sinds file-utils 4.1) Hier kan het HOW-argument een van de waarden "ja", "nee", "query" aannemen, waarmee wordt bepaald welk antwoord automatisch op alle vragen wordt gegeven: "ja", "nee" of "query" aan de gebruiker dienovereenkomstig. --verwijder-bestemming(sinds file-utils 4.1) Verwijdert elk bestaand bestand (op de plaats waar het kopiëren plaatsvindt) voordat het wordt gekopieerd. In file-utils 4.0 was deze optie impliciet ingeschakeld toen de optie -f werd opgegeven. --sparse=WANNEER Een sparse-bestand bevat gaten: reeksen van nul bytes die geen fysieke blokken op de schijf bezetten; systeem oproep read leest ze als nullen. Deze aanpak kan zowel schijfruimte besparen als de werksnelheid verhogen, omdat veel binaire bestanden cp bevatten veel opeenvolgende nulbytes. Standaard, WANNEER identificeert gaten in het bronbestand met behulp van eenvoudige heuristieken en maakt het overeenkomstige uitvoerbestand ook schaars. Parameter: kan accepteren volgende waarden auto Standaardgedrag: het uitvoerbestand is schaars als het invoerbestand ook schaars is. altijd Zorg er altijd voor dat het uitvoerbestand schaars is. Dit is handig wanneer invoerbestand gelegen op bestandssysteem, dat geen beperkte bestanden ondersteunt, en het uitvoerbestand zal zich bevinden op een bestandssysteem dat deze wel ondersteunt. nooit Maak uitvoerbestanden nooit schaars. Als u een toepassing voor deze optie vindt, laat het ons dan weten. --strip-trailing-slashes --symbolische-link Maakt symbolische koppelingen in plaats van niet-mappen te kopiëren. Alle bronbestandsnamen moeten volledig gekwalificeerd zijn, d.w.z. beginnend met /, behalve wanneer er symbolische links in worden gemaakt huidige map. Deze optie genereert een foutmelding als het systeem geen symbolische links ondersteunt. -S Back-upachtervoegsel, zie hieronder. --doelmap=CATALOGUS(sinds file-utils 4.1) Specificeert de doelmap waar de kopie zal worden gemaakt. Bedoeld voor gebruik met xargs(1), zoals in "ls | xargs cp --target-directory=../d". -u, --update Kopieer geen niet-mappen die al bestaan ​​op de locatie waarnaar wordt gekopieerd als deze dezelfde of eerdere wijzigingstijd hebben. -v, --uitgebreid Druk de naam van elk bestand af voordat u het kopieert. -X, --één-bestandssysteem Sla submappen over die zich op een ander bestandssysteem bevinden dan het systeem waarop het kopiëren is gestart.

Als u een bestand naar zichzelf probeert te kopiëren, gebeurt er niets (behalve de mogelijke foutmelding). Wanneer een bestand naar een ander bestaand bestand wordt gekopieerd, wordt het geopend met de aanroep open(path, O_WRONLY | O_TRUNC). Wanneer er opnieuw wordt gekopieerd RESERVEREN KOPIËREN Er is geen standaardoptie: u moet een van de opties opgeven om het gewenste resultaat te bereiken.

GNU-versies van programma's zoals cp, mv, ln, installeren En lapje kan, indien nodig, doen back-ups bestanden die zullen worden overschreven, gewijzigd of vernietigd. Indien gewenst worden er back-ups van bestanden gemaakt met de optie -b. Hoe ze worden genoemd, wordt gespecificeerd door de optie -V. Als de naam van het back-upbestand wordt gemaakt door een achtervoegsel toe te voegen aan de naam van het originele bestand, wordt het achtervoegsel opgegeven met de optie -S. -B, , wat een uitzondering is. Maak back-ups van bestanden die worden overschreven of verwijderd. --back-up=CONTROLE(Sinds fileutils-4.1.) -S ACHTERVOEGSEL, --achtervoegsel=ACHTERVOEGSEL Toevoegen ACHTERVOEGSEL aan de bestandsnaam bij het maken van een reservekopie. Als deze optie niet is opgegeven, kan het achtervoegsel ook worden ingesteld met behulp van een omgevingsvariabele SIMPLE_BACKUP_SUFFIX Als er geen optie of variabele is opgegeven, is het standaardachtervoegsel ~. -V, METHODE-V--versie-controle= -V Bepaalt hoe de back-upbestanden worden genoemd. Argument kan de waarden aannemen genummerd (of t), bestaand (of nul) en nooit (of eenvoudig). Als deze optie niet is opgegeven, wordt de waarde gebruikt omgevingsvariabele VERSIE_CONTROL . Als de waarde van deze variabele niet is opgegeven, is dit het standaardtype back-up is ingesteld op bestaand. Deze optie -V komt overeen met de versiecontrolevariabele in Emacs. Geldige waarden zijn (ondubbelzinnige afkortingen zijn toegestaan):, T genummerd Maak altijd genummerde reservekopieën van bestanden., nul Maak genummerde bestandsback-ups voor bestanden die deze al hebben, en eenvoudige back-ups voor andere bestanden. bestandssysteem, eenvoudig Maak altijd eenvoudige back-ups.

STANDAARD Als u een bestand naar zichzelf probeert te kopiëren, gebeurt er niets (behalve de mogelijke foutmelding). Wanneer een bestand naar een ander bestaand bestand wordt gekopieerd, wordt het geopend met de aanroep open(path, O_WRONLY | O_TRUNC). Wanneer er opnieuw wordt gekopieerd Er is geen standaardoptie: u moet een van de opties opgeven om het gewenste resultaat te bereiken.

--hulp Druk een hint af naar standaarduitvoer en sluit succesvol af. --versie Druk versie-informatie af naar standaarduitvoer en sluit succesvol af. -- Dient om het einde van een lijst met opties te markeren.

OMGEVING

Bij normaal werken worden de waarden gebruikt LANG-variabelen, LC_ALL, LC_COLLATE, LC_CTYPE en LC_MESSAGES. Voor de GNU-versie worden de variabelen SIMPLE_BACKUP_SUFFIX en VERSION_CONTROL ook gebruikt om het maken van back-ups te regelen, zoals hierboven beschreven.

VERENIGBAARHEID

POSIX 1003.2

OPMERKINGEN

Deze pagina beschrijft de versie cp pakket fileutils-4.1; andere versies kunnen kleine verschillen hebben. Correcties en aanvullingen kunt u sturen naar: [e-mailadres beveiligd]. Stuur bugrapporten in dit programma naar: [e-mailadres beveiligd].

VERTALING

Vertaald uit het Engels door Viktor Vislobokov 2003

Hoewel het cat-commando soms wordt gebruikt om bestanden te kopiëren, bestaat er in Linux een speciaal cp-commando hiervoor. Het kan in twee vormen worden gebruikt:

$cp bronbestemming

$ cp bron_map nieuwe_map

In het eerste geval wordt het bronbestand of de bronmap respectievelijk gekopieerd naar het doelbestand of de doelmap, en in het tweede geval worden de bestanden in de map source_directory gekopieerd naar de map new_directory. Om te kopiëren moet u leesrechten hebben voor de bestanden die u kopieert en schrijfrechten voor de map waarnaar u kopieert.

Als een bestaand bestand als doel wordt opgegeven, wordt de inhoud ervan overschreven, dus wees voorzichtig bij het kopiëren. U kunt echter de opdracht cp gebruiken met de optie -i, die om bevestiging vraagt ​​voordat een bestaand bestand wordt overschreven.

Het cp-commando heeft verschillende andere handige opties:

Betekenis

Bespaart tijd voor het wijzigen van bestanden en maximaal mogelijke machtigingen. Zonder deze optie krijgt het nieuwe bestand de machtigingen toegewezen die overeenkomen met de machtigingen van de gebruiker die de opdracht heeft gestart

Als de bron een map is, worden zowel deze map als alle submappen die daarin zijn opgenomen gekopieerd, dat wil zeggen dat de oorspronkelijke vorm van de mappenstructuur behouden blijft.

Als u deze optie instelt, blijven symbolische links links (anders wordt in plaats van de link het bestand waarnaar de link wordt gegeven gekopieerd)

Overschrijf bestanden tijdens het kopiëren (als ze al bestaan) zonder extra waarschuwingen

Team mv

Als u een bestand van de ene map naar de andere moet verplaatsen in plaats van het te kopiëren, kunt u de opdracht mv gebruiken. De syntaxis van dit commando is vergelijkbaar met de syntaxis van het cp-commando. Bovendien kopieert het eerst het bestand (of de map) en verwijdert pas daarna het originele bestand (de map). En de opties zijn dezelfde als die van cp.

Het mv-commando kan niet alleen worden gebruikt om bestanden en mappen te verplaatsen, maar ook om ze te hernoemen (dat wil zeggen, ze binnen dezelfde map te verplaatsen). Om dit te doen, hoeft u alleen maar de oude en nieuwe bestandsnamen als argumenten op te geven:

$mv oudenaam nieuwenaam

Houd er rekening mee dat u met de opdracht mv niet meerdere bestanden tegelijk kunt hernoemen (met behulp van een naampatroon), dus de opdracht mv *.xxx *.yyy zal niet werken.

Wanneer u het mv-commando gebruikt, moet u, net als wanneer u cp gebruikt, de optie -i gebruiken om een ​​waarschuwing te ontvangen wanneer een bestand wordt overschreven.

De opdrachten rm en rmdir

Om te verwijderen onnodige bestanden en mappen in Linux worden de commando's rm (bestanden verwijderen) en rmdir (verwijder een lege map) gebruikt. Om deze opdrachten te kunnen gebruiken, moet u schrijftoegang hebben tot de map waarin de te verwijderen bestanden of mappen zich bevinden. Er is echter geen toestemming vereist om de bestanden zelf te wijzigen. Als u een extra verzoek wilt ontvangen om de bewerking te bevestigen voordat u een bestand verwijdert, gebruikt u de optie -i.

Als u de opdracht rm (zonder opties) probeert te gebruiken om een ​​map te verwijderen, wordt u gevraagd dat het een map is en niet zal worden verwijderd. Om een ​​map te verwijderen, moet u alle bestanden daarin verwijderen en vervolgens de map zelf verwijderen met behulp van rmdir-opdrachten. U kunt echter ook een niet-lege map en alle submappen en bestanden verwijderen met behulp van de opdracht rm met de optie -r.

Als u de opdracht rm * geeft, worden alle bestanden in de huidige map verwijderd. Submappen worden niet verwijderd. Om zowel bestanden als submappen van de huidige map te verwijderen, moet u ook de optie -r gebruiken. Onthoud echter altijd dat Linux geen opdracht heeft om bestanden te herstellen nadat ze zijn verwijderd (zelfs als je jezelf betrapt nadat je per ongeluk een bestand of map hebt verwijderd)!

Deze handleiding laat zien hoe u bestanden en mappen op uw systeem kunt kopiëren met behulp van de Linux-opdrachtregel.

Het commando dat wordt gebruikt om bestanden te kopiëren is wo

Hoe een bestand van de ene map naar de andere te kopiëren met Linux

De syntaxis voor het kopiëren van een bestand van de ene locatie naar de andere is als volgt:

Cp /bron/pad/naam /doel/pad/naam

  • thuis
    • andreyex
      • documenten
        • map_één
          • bestand_één
          • bestand_twee
          • bestand_drie
        • map_twee
          • bestand4

Als u file_one wilt kopiëren van huidige locatie in /home/documents/folder_one in /home/documents/folder_two dan moet je het volgende commando invoeren opdrachtregel:

Cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

Er zijn enkele snelkoppelingen die u hier kunt maken.

/ Het hoofdgedeelte kan worden vervangen door een tilde (~), wat in dit artikel wordt uitgelegd. Dit verandert het commando hierin

cp ~/documenten/folder_one/file_one ~/documents/folder_two/file_one

U kunt eenvoudigweg de bestandsnaam voor het doel weglaten als u dezelfde bestandsnaam gaat gebruiken

Cp ~/documenten/map_één/bestand_één ~/documenten/map_twee

Als u zich al in de doelmap bevindt, kunt u eenvoudig het doelpad vervangen door een punt.

Cp ~/documenten/map_één/bestand_één

Als alternatief, als je al binnen bent originele map u kunt eenvoudig de bestandsnaam als bron opgeven, zoals deze:

Hoe u een back-up maakt voordat u bestanden kopieert in Linux

In de vorige sectie bevat map_één een bestand met de naam file_one en map_twee niet. Stel je voor dat map_twee een bestand heeft met de naam file_one en je voert de volgende opdracht uit:

Cp file_one ~/documents/folder_twee

De bovenstaande opdracht overschrijft bestand_één, dat zich momenteel in map_twee bevindt. Er zijn geen aanwijzingen, geen waarschuwingen en geen foutmeldingen omdat u een geldige opdracht hebt opgegeven.

Je kunt voorzorgsmaatregelen nemen bij het kopiëren van bestanden door Linux een reservekopie van het bestand te laten maken voordat het wordt overschreven. Gebruik gewoon de volgende opdracht:

Cp -b /bron/bestand /doel/bestand

Bijvoorbeeld:

Cp -b ~/documenten/map_één/bestand_één ~/documenten/map_twee/bestand_één

De doelmap bevat nu het bestand dat is gekopieerd en er zal ook een bestand zijn met een tilde (~) aan het einde, wat een reservekopie is van het originele bestand.

U kunt de opdracht backup wijzigen zodat deze op een iets andere manier werkt, zodat er genummerde backups worden gemaakt. U kunt dit doen als u de bestanden al hebt gekopieerd en er al back-ups bestaan. Dit is een vorm van versiebeheer

Cp --backup=genummerd ~/documents/folder_één/file_one ~/documents/folder_twee/file_one

De bestandsnaam voor back-ups verandert gaandeweg 1.~1~, file_one.~2~, enz.

Hoe u kunt vragen voordat u bestanden overschrijft bij het kopiëren in Linux

Als u geen back-up wilt maken van bestanden op uw bestandssysteem, maar er ook zeker van wilt zijn dat de kopieeropdracht niet zomaar een bestand overschrijft, wordt u mogelijk gevraagd aan te geven of u wilt overschrijven.

Gebruik hiervoor de volgende syntaxis:

Cp -i /bron/bestand /doel/bestand

Bijvoorbeeld:

Cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Het bericht ziet er als volgt uit: cp: './file1' overschrijven?

Om een ​​bestand te overschrijven, drukt u op Y op uw toetsenbord, of om te annuleren drukt u tegelijkertijd op N of CTRL en C.

Wat gebeurt er als je symbolische links kopieert in Linux

Stel je voor dat je dat hebt gedaan volgende structuur mappen:

  • thuis
    • andreyex
      • documenten
        • map_één
          • bestand_één
        • map_twee
          • file_one (symbolische koppelingen verwijzen naar map_one/file_one)
        • map3

Kijk naar de volgende opdracht:

Cp ~/documenten/folder_one/file_one ~/documents/folder3/file_one

Dit zou niets nieuws moeten zijn, aangezien het kopiëren is fysiek bestand van de ene map naar de andere.

Wat gebeurt er echter als u de symbolische link van map_twee naar map3 kopieert?

Cp ~/documenten/map_twee/bestand_één ~/documenten/map3/bestand_één

Het bestand dat naar map3 wordt gekopieerd, is geen symbolische link. Dit is feitelijk het bestand waar de symlink naar verwijst, dus in feite krijgt u hetzelfde resultaat als wanneer u file_one uit map_one kopieert.

Overigens kun je hetzelfde resultaat krijgen met de volgende opdracht:

Cp -H ~/documenten/map_twee/bestand_één ~/documenten/map3/bestand_één

Voor de zekerheid is er echter nog een andere schakelaar die absoluut dwingt dat het bestand wordt gekopieerd en niet de symlink:

Cp -L ~/documenten/map_twee/bestand_één ~/documenten/map3/bestand_één

Als u een symbolische link wilt kopiëren, moet u het volgende commando opgeven:

Cp -d ~/documenten/map_twee/bestand_één ~/documenten/map3/bestand_één

Cp -P ~/documenten/map_twee/bestand_één ~documenten/map3/bestand_één

Hoe u harde koppelingen maakt met behulp van de opdracht cp

Deze gids vertelt u alles wat u moet weten over harde links.

Cp -l ~/bron/bestand ~/doel/bestand

Als voorbeeld van waarom u een harde link zou kunnen gebruiken, kunt u bedenken dat u een map heeft met de naam video's en dat u zich binnen die videomap daadwerkelijk bevindt geweldig filmpje bestand met de naam huwelijksreis_video.mp4. Stel je nu voor dat je ook wilt dat de video bekend staat als barbados_video.mp4, omdat deze ook beelden van Barbados bevat.

Je kunt het bestand gewoon kopiëren en een nieuwe naam geven, maar dat betekent dat je twee keer zoveel verdient schijfruimte voor wat in wezen dezelfde video is.

U kunt in plaats daarvan een symbolische link maken met de naam barbados_video.mp4 die verwijst naar het bestand honeymoon_video.mp4. Dit zou goed werken, maar als iemand honeymoon_video.mp4 zou verwijderen, zou je de link overhouden en niets anders, en de link zou nog steeds schijfruimte in beslag nemen.

Het enige verschil is dat ze bevatten verschillende hoeveelheden inodes. (unieke identificatiegegevens). Als u het bestand honeymoon_video.mp4 verwijdert, wordt het bestand niet verwijderd, maar wordt het aantal voor dat bestand alleen met 1 verminderd. Het bestand wordt alleen verwijderd als alle verwijzingen naar dat bestand zijn verwijderd.

Cp -l /videos/huwelijksreis_video.mp4 /videos/barbados_video.mp4

Hoe symbolische koppelingen te maken met behulp van de opdracht cp

Cp -s /bron/bestand /doel/bestand

Nogmaals, persoonlijk zou ik over het algemeen de opdracht ln -s gebruiken, maar dit werkt in plaats daarvan goed.

Bestanden kopiëren als ze nieuwer zijn

Als u bestanden naar een map wilt kopiëren, maar alleen de doelbestanden wilt overschrijven als het bronbestand nieuwer is, kunt u de volgende opdracht gebruiken:

Cp -u /bron/bestand /doel/bestand

Het is vermeldenswaard dat als het bestand niet aan de doelzijde bestaat, er een kopie zal plaatsvinden.

Hoe meerdere bestanden te kopiëren

U kunt meer dan één bronbestand opgeven in een kopieeropdracht, zoals deze:

Cp /source/file_one /source/file_two /source/file_three /target

De bovenstaande opdracht kopieert file_one, file_two en file_three naar de doelmap.

Als de bestanden aan een bepaald patroon voldoen, kunt u ook jokertekens als volgt gebruiken:

Cp /home/andreyex/muziek/*.mp3 /home/andreyex/muziek2

Met de bovenstaande opdracht worden alle bestanden met de extensie .mp3 naar de map music2 gekopieerd.

Hoe mappen te kopiëren

Het kopiëren van mappen is hetzelfde als het kopiëren van bestanden.

Stel je bijvoorbeeld voor dat je de volgende mappenstructuur hebt:

  • thuis
    • andreyex
      • documenten
        • map_één
          • bestand_één
          • bestand_twee
        • map_twee

Stel je voor dat je de map map_één als volgt naar de map map_twee wilt verplaatsen:

  • thuis
    • andreyex
      • documenten
        • map_twee
          • map_één
            • bestand_één
            • bestand_twee

U kunt de volgende opdracht gebruiken:

Cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Als alternatief kunt u de volgende opdracht gebruiken:

Cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Hiermee kopieert u de inhoud van map_één, evenals eventuele submappen en bestanden in submappen.

Cv

Deze handleiding heeft je de tools gegeven die je nodig hebt om bestanden op Linux te kopiëren. Voor al het andere kun je het Linux man-commando gebruiken.

Het cp-team is de redder in nood die altijd te hulp komt. Als u Linux zojuist hebt geïnstalleerd en nog niet hebt geïnstalleerd, maar internettoegang wilt instellen, moet u dit configureren bepaalde bestanden, dan helpt het cp-team ons als geen ander.
Laten we zeggen dat u voor het instellen van internettoegang enkele bestanden moet wijzigen, maar vanwege het gebrek aan toegangsrechten kunt u dit niet via de grafische interface doen. Maar u kunt in elk bestand een bestand maken met behulp van de grafische interface toegankelijke map(bijvoorbeeld /home/gebruikersnaam), vul het in volgens de instructies of handleiding en vervang, gevolgd door , het bestaande bestand door het bestand dat u met de opdracht cp hebt gemaakt.
U moest bijvoorbeeld, net als ik, het bestand /etc/network/interfaces wijzigen. Persoonlijk heb ik met behulp van de grafische interface het interfacebestand gemaakt in /home/viuktor/. Ik heb de inhoud van het origineel (bestand /etc/network/interfaces) ernaar gekopieerd, toegevoegd benodigde lijnen en heb het opgeslagen. En vervolgens heb ik met behulp van cp het bestand /etc/network/interfaces vervangen door het bestand /home/viuktor/interfaces..
Waar, vervullend deze operatie, moet u maximale aandacht besteden, omdat sommige bestanden heel vaak moeten worden aangevuld met een of meer regels. Als er in de handleiding dus “toevoegen...” staat, vergeet dan in geen geval alles van het origineel naar het bestand dat u hebt gemaakt te kopiëren.

De opdracht cp wordt gebruikt om bestanden te kopiëren en te verplaatsen.

Het heeft de volgende syntaxis cp (parameter)<источник> <пункт назначения>

BESCHRIJVING In het eerste formulier kopieert het cp-hulpprogramma de inhoud van het bestand source_file naar target_file. In de tweede vorm de inhoud van elk opgegeven bestand gekopieerd naar doelmap. De namen van de bestanden zelf veranderen niet. Als cp een poging detecteert om een ​​bestand naar zichzelf te kopiëren, wordt de kopie niet uitgevoerd. die het bevat. Als source_file eindigt op /, wordt niet de map zelf gekopieerd, maar alleen de inhoud ervan. Deze optie zorgt er ook voor dat symlinks worden gekopieerd in plaats van de objecten waarnaar ze verwijzen, en zorgt ervoor dat cp speciale bestanden aanmaakt in plaats van deze zoals normale bestanden te kopiëren. De gemaakte mappen hebben dezelfde toegangsrechten als de bronmappen, ongeacht de umask-waarde die van kracht is voor het proces. Houd er rekening mee dat cp harde links als afzonderlijke bestanden kopieert. Als u harde links moet opslaan, gebruik dan tar(1), cpio(1) of pax(1).-f Verwijder elke reeds bestaande doelpadnaam en maak deze aan nieuw bestand, zonder dat bevestiging van de bewerking vereist is, ongeacht de toegangsrechten. (De optie -f overschrijft alle eerder opgegeven opties -i of -n.) -i Zorgt ervoor dat cp het verzoek verzendt via standaard bestand fouten voordat u een bestand kopieert, waardoor het bestaande bestand wordt overschreven. Als het antwoord dat wordt ontvangen via de standaardinvoer begint met een 'y' of 'Y', wordt geprobeerd een kopie te maken. (De optie -i overschrijft alle eerder opgegeven opties -f of -n.) -l ​​Maak harde koppelingen naar gewone bestanden in de hiërarchie in plaats van ze te kopiëren.-n Overschrijf geen bestaande bestanden. (De optie -n overschrijft het effect van eventuele voorgaande opties -f of -i.) -p Zorgt ervoor dat cp de volgende kenmerken van elk bronbestand opslaat in de kopie die wordt gemaakt, waarbij bestanden worden weergegeven terwijl ze worden gekopieerd. Voor elk bestaand doelbestand wordt de inhoud ervan overschreven als de machtigingen dit toestaan. De toegangsmodus en gebruikers- en groeps-ID's worden niet gewijzigd, tenzij de optie -p is opgegeven. ondersteunt deze optie, maar het gedrag ervan verschilt van het historische. Het gebruik van deze optie wordt sterk afgeraden, omdat het gedrag ervan afhankelijk is van de implementatie. Op FreeBSD is -r een synoniem voor -RL en werkt hetzelfde, tenzij het wordt overschreven door andere vlaggen. De implementatie van -r in oudere versies verschilde doordat bij het opnieuw creëren van de bestandshiërarchie speciale bestanden als normale bestanden werden gekopieerd.



De opties -v en -n zijn niet-standaard en het gebruik ervan in opdrachtscripts wordt niet aanbevolen. ZIE OOK mv(1), rcp(1), umask(2), fts(3), symlink(7) GESCHIEDENIS Het cp-commando werd geïntroduceerd in versie 1 van AT&T UNIX.Vorig artikel
Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereidenVolgend artikel