Linux commando: cp
Een bestand kopieren voelt als het gewoonste wat je op een computer kunt doen. Je typt cp, het oude bestand, de nieuwe naam, en drukt op Enter. Klaar. Maar dat rustige commandootje verbergt een paar van de scherpste randjes in Linux: het kan je werk stilletjes overschrijven, het behandelt het kopieren van een map als een speciaal geval waar je expliciet om moet vragen, en op een modern bestandssysteem kan het een bestand van 10 GB in een fractie van een seconde kopieren zonder extra schijfruimte te gebruiken. cp goed leren is leren hoe Linux over bestanden denkt.
1. De basis
De taak van cp is om een bestand te kopieren: het leest de bytes van een bron en schrijft een onafhankelijke kopie naar een bestemming. Het origineel blijft precies waar het was, onaangeroerd. Daarna heb je twee losse bestanden die toevallig dezelfde inhoud bevatten maar hun eigen leven leiden; verander het ene en het andere beweegt niet mee.
Die onafhankelijkheid is het hele punt, en het is wat cp onderscheidt van zijn neefje mv. Wanneer je een bestand verplaatst binnen hetzelfde bestandssysteem, wordt er helemaal niets gekopieerd; alleen de naam verandert. Wanneer je een bestand kopieert, worden de gegevens echt opnieuw gelezen en geschreven, dus een kopie van een groot bestand kost echte tijd en echte ruimte. Houd dat verschil in gedachten; het verklaart bijna alles wat cp doet.
Het commando leest van links naar rechts: het laatste argument is de bestemming, en alles daarvoor is een bron.
$ cp report.txt report-backup.txt
Het commando dat iedereen op dag een leert. Achter die twee letters schuilt een verrassende hoeveelheid zorg over wat "een kopie" echt betekent: rechten, tijdstempels, symbolische links, mappen, en of het oude bestand op de bestemming blijft bestaan.
Dit artikel begint met de eenvoudigst mogelijke kopie en bouwt op naar het kopieren van hele mapbomen, het behouden van metadata, backups maken in plaats van overschrijven, en de copy-on-write-truc die enorme kopieen bijna onmiddellijk laat voelen. Aan het einde weet je niet alleen hoe je een bestand kopieert, maar precies wanneer cp er een gaat vernietigen.
Naar bovenHet juiste denkmodel:
cpmaakt een tweede, onafhankelijk bestand. Het origineel is veilig; het gevaar zit altijd bij de bestemming, want standaard overschrijftcpalles wat daar al staat, zonder een woord.
2. Waar komt de naam vandaan?
De naam cp is simpelweg een afkorting van copy (kopieren). Deze keer zit er geen verborgen betekenis in; de twee letters zijn de eerste twee medeklinkers van het woord.
cp = CoPy
Zoals de meeste vroege Unix-commando's werd de naam bewust tot het absolute minimum teruggebracht. Het vroege Unix werd getypt op trage teletype-terminals die elk teken op papier afdrukten, dus korte namen bespaarden zowel typtijd als papier. Daarom is het commando cp en niet copy. Diezelfde reflex gaf ons mv (move), rm (remove) en ls (list): een hele woordenschat van werkwoorden van twee letters.
Als je ooit naar Windows overstapt, let dan op dat de shell daar het vollere woord copy gebruikt. De Unix-gewoonte van korte namen is een historische vingerafdruk, geen natuurwet.
3. Een korte geschiedenis
Het commando cp is een van de originele Unix-gereedschappen. Het werd geleverd met Unix 1st Edition bij Bell Labs in 1971, naast cat, mv en rm, en is sindsdien aanwezig op elk Unix-achtig systeem: Linux, macOS, de BSD's, Solaris en AIX. Het kernidee, "lees een bestand en schrijf het weg onder een nieuwe naam", is in ruim vijftig jaar niet veranderd.
Wat wel is veranderd, is wat er onder de motorkap gebeurt. Decennialang was cp een simpele lus die een blok bytes las en het weer wegschreef. Moderne versies zijn veel slimmer: ze kunnen de kernel vragen om gegevens te kopieren zonder ze door het programma te slepen, ze kunnen lange reeksen nullen herkennen en overslaan (sparse-bestanden), en op sommige bestandssystemen delen ze gegevensblokken tussen de bron en de kopie totdat een van beide verandert.
| Periode | Mijlpaal |
|---|---|
| 1971 | cp verschijnt in Unix 1st Edition bij Bell Labs |
| Jaren 80 | BSD en System V voegen recursief kopieren en behoud van metadata toe |
| Jaren 90 | GNU coreutils cp wordt de standaardversie op Linux |
| 2011 | GNU cp krijgt --reflink voor copy-on-write-klonen (Btrfs, later XFS) |
| 2021 | coreutils 9.0 gebruikt automatisch reflink-kopieen wanneer het bestandssysteem het ondersteunt |
Er zijn twee families die je in de praktijk tegenkomt. De meeste Linux-systemen draaien de GNU coreutils-versie van cp. macOS en de BSD's leveren de BSD-versie. Ze zijn het eens over de alledaagse opties zoals -r, -i, -p en -f. De verschillen zitten in de extra's: GNU voegt lange opties toe (bijvoorbeeld --preserve, --parents en --reflink) die BSD anders spelt of mist. Dit artikel gebruikt de GNU-versie, die je op vrijwel elke Linux-server vindt.
4. Eenvoudige toepassingen
4.1 De eenvoudigst mogelijke kopie
Geef cp een bron en een bestemmingsnaam, en het maakt een kopie onder die naam. In de voorbeelden hieronder is de regel die met $ begint wat je typt; een commando dat niets afdrukt, is gewoon geslaagd, wat de normale Unix-manier is om "alles goed" te zeggen.
$ cp notes.txt notes-copy.txt
$ ls
notes.txt notes-copy.txt
Je hebt nu twee onafhankelijke bestanden. Als je notes-copy.txt bewerkt, blijft notes.txt precies zoals het was.
4.2 Kopieren naar een map
Als de bestemming een bestaande map is, zet cp de kopie erin en behoudt de oorspronkelijke bestandsnaam. Dit is het meest voorkomende dagelijkse gebruik: een bestand in een map laten vallen.
$ cp report.txt /home/peter/backups/
$ ls /home/peter/backups/
report.txt
De afsluitende schuine streep op backups/ is een goede gewoonte: het maakt je bedoeling duidelijk en, als je de mapnaam verkeerd typt, faalt cp luid in plaats van stilletjes een bestand met de naam backups aan te maken.
4.3 Meerdere bestanden tegelijk kopieren
Wanneer je meer dan twee argumenten geeft, behandelt cp het laatste als een bestemmingsmap en kopieert het elk bestand ervoor naar die map. Hier telt de regel "het laatste argument is de bestemming" echt.
$ cp index.html style.css script.js /var/www/site/
Alle drie de bestanden komen in /var/www/site/ terecht. Als dat laatste argument geen bestaande map is, weigert cp en drukt het een foutmelding af, wat een handig vangnet is.
4.4 Een hele map kopieren: -r
Standaard weigert cp een map te kopieren. Dat verrast nieuwelingen, maar het is bewust: een map kopieren betekent alles erin kopieren, mogelijk duizenden bestanden, dus cp laat je er expres om vragen. De optie -r (kort voor recursive, recursief) geeft toestemming om in de map af te dalen en de hele boom te kopieren.
$ cp project project-backup
cp: -r not specified; omitting directory 'project'
$ cp -r project project-backup
$ ls
project project-backup
De naam "recursief" beschrijft het mechanisme: cp gaat de map binnen, kopieert elk bestand, en telkens wanneer het een andere map tegenkomt, herhaalt het dezelfde stappen daarbinnen, helemaal naar beneden. Je ziet ook -R; voor dagelijks gebruik zijn de twee gelijk, en ze verschillen alleen in zeldzame randgevallen met speciale bestanden.
Naar bovenEen enkel bestand kopieren is de makkelijke helft. Zodra er een map bij komt kijken, verandert
cpvan karakter: het heeft-rnodig, en of de bestemming al bestaat verandert stilletjes waar je bestanden terechtkomen. Sectie 6 komt terug op die valkuil.
5. Gematigde toepassingen
5.1 Niet stilletjes overschrijven: -i en -n
Standaard overschrijft cp een bestaand bestemmingsbestand zonder waarschuwing. Als report-backup.txt al iets belangrijks bevat, wist een onvoorzichtige kopie het uit. Twee opties maken cp voorzichtiger.
De optie -i (kort voor interactive, interactief) vraagt het voordat het overschrijft, zodat je een fout kunt tegenhouden:
$ cp -i new.txt report-backup.txt
cp: overwrite 'report-backup.txt'? n
De optie -n (kort voor no-clobber, niet-overschrijven) is de stille versie: het slaat elk bestand over dat al bestaat en vraagt nooit, wat handig is in scripts waar je alleen ontbrekende bestanden wilt aanvullen.
$ cp -n new.txt report-backup.txt # existing file is left untouched
5.2 Zien wat er gebeurt: -v
De optie -v (kort voor verbose, uitgebreid) drukt een regel per gekopieerd bestand af. Bij een grote recursieve kopie verandert dit een stille, verontrustende pauze in een zichtbare lijst met voortgang.
$ cp -rv photos /backup/
'photos/2023' -> '/backup/photos/2023'
'photos/2023/beach.jpg' -> '/backup/photos/2023/beach.jpg'
'photos/2024/city.jpg' -> '/backup/photos/2024/city.jpg'
5.3 De metadata behouden: -p
Een gewone kopie is een nieuw bestand. Het krijgt een verse wijzigingstijd (nu) en neemt zijn rechten over van je huidige instellingen, niet van het origineel. Meestal is dat prima. Voor backups en systeembestanden niet: vaak wil je dat de kopie de rechten, eigenaar en tijdstempels van het origineel behoudt. De optie -p (kort voor preserve, behouden) doet precies dat.
$ cp file.conf copy.conf # copy has a new timestamp and default mode
$ cp -p file.conf copy-kept.conf # copy keeps mode, owner, and times
Je kunt om meer of minder vragen met de lange vorm --preserve=, waarbij je kiest uit mode, ownership, timestamps, links en all:
$ cp --preserve=timestamps a.log b.log # keep only the times
5.4 De archief-snelkoppeling: -a
Wanneer je een mapboom kopieert die symbolische links, speciale rechten en bestanden bevat die je precies zo wilt laten, is het uittypen van elke behoud-optie omslachtig. De optie -a (kort voor archive, archief) bundelt de juiste standaardinstellingen: het is hetzelfde als -dR --preserve=all. Het kopieert recursief, behoudt elk attribuut, en verandert symbolische links niet in echte bestanden.
$ cp -a /etc/nginx /root/nginx-backup # a faithful, complete copy
"Elk attribuut" betekent meer dan mode, eigenaar en tijdstempels. --preserve=all (en dus -a) probeert ook de uitgebreide attributen (xattr), ACL's en de SELinux-beveiligingscontext te behouden, voor zover het bestemmingsbestandssysteem ze ondersteunt. Die dekking is de reden dat cp -a het dichtst bij "maak een exacte kopie van deze boom" komt, en waarom het de juiste keuze is om een map onveranderd te backuppen.
Er zit wel een grens aan. cp behoudt wat het lokale bestandssysteem begrijpt; kopieren naar een bestandssysteem of een andere machine die rechten anders behandelt, kan een deel van die metadata stilletjes laten vallen. Voor getrouwe kopieen tussen Linux-systemen grijpen veel beheerders nog steeds naar rsync (met -a) of tar, waar sectie 7 op terugkomt.
6. Gevorderde toepassingen
6.1 De mapvalkuil: bestemming bestaat wel of niet
Dit is het meest verwarrende aan cp -r, en het overkomt iedereen minstens een keer. Wanneer je een map kopieert, hangt het resultaat ervan af of de bestemming al bestaat.
$ cp -r src dst # dst does NOT exist: dst becomes a copy of src
$ cp -r src dst # dst DOES exist: src is copied INSIDE dst
# giving dst/src
Voer hetzelfde commando twee keer uit en je krijgt twee verschillende indelingen. De eerste keer maakt dst aan als een kopie van src. De tweede keer plaatst het, omdat dst nu bestaat, een kopie van src binnen die map, wat dst/src oplevert. Om alleen de inhoud van een map naar een andere te kopieren, benoem je de inhoud expliciet:
$ cp -r src/. dst/ # copy what is inside src into dst, no extra level
De vorm src/. betekent "de inhoud van src", waarmee je de hele bestaat-of-niet-vraag omzeilt. Wanneer een backupscript op mysterieuze wijze backup/backup/backup produceert, is deze regel bijna altijd de oorzaak.
6.2 Backups in plaats van overschrijven: -b
Soms wil je een bestand overschrijven maar de oude versie voor de zekerheid bewaren. De optie -b (kort voor backup) hernoemt het bestaande bestemmingsbestand uit de weg voordat het nieuwe wordt geschreven, en voegt standaard een ~ aan de naam toe.
$ cp -b new.conf app.conf
$ ls
app.conf app.conf~ # the old app.conf is now app.conf~
Met --backup=numbered krijg je app.conf.~1~, app.conf.~2~, enzovoort, zodat herhaalde kopieen nooit een eerdere versie verliezen. Dit is een lichte veiligheidsgewoonte voor het met de hand bewerken van configuratiebestanden.
6.3 Paden herbouwen: --parents
De optie --parents herbouwt het volledige mappad van de bron onder de bestemming. Het is onmisbaar wanneer je verspreide bestanden wilt kopieren met behoud van hun mapstructuur.
$ cp --parents src/config/app.ini /backup/
$ ls /backup/
src # the full src/config/ path is rebuilt
$ ls /backup/src/config/
app.ini
In plaats van app.ini rechtstreeks in /backup/ te dumpen, herbouwt cp src/config/ eronder. Zo blijft een set gekopieerde bestanden precies zo geordend als ze waren.
6.4 Links in plaats van kopieen: -l en -s
Twee opties laten cp links maken in plaats van echte kopieen, wat ruimte bespaart wanneer je geen echt onafhankelijke tweede kopie nodig hebt.
| Optie | Kort voor | Wat het maakt |
|---|---|---|
-l |
link | Een harde link: een tweede naam voor dezelfde gegevens op schijf |
-s |
symbolic-link | Een symlink: een klein verwijzingsbestand dat het oorspronkelijke pad benoemt |
Een harde link (-l) is helemaal geen kopie; het is een andere naam voor dezelfde bytes, dus het gebruikt geen extra ruimte en bewerken via een van beide namen verandert het ene onderliggende bestand. Een symbolische link (-s) is een klein wegwijzertje dat via het pad naar het origineel wijst, en het breekt als het origineel wegverhuist. Geen van beide is een backup, want er is nog steeds maar een echte kopie van de gegevens.
6.5 Symbolische links volgen of behouden: -L en -P
Wanneer een bron zelf een symbolische link is, moet cp beslissen: kopieer de link, of kopieer het bestand waar hij naar wijst? De optie -L (kort voor dereference, dereferentieren) volgt de link en kopieert het echte bestand. De optie -P (kort voor no-dereference, niet-dereferentieren) kopieert de link zelf, zodat er een link in de bestemming achterblijft. Met -a krijg je het gedrag van -P, wat meestal juist is voor getrouwe backups.
7. Iets wat de meeste gebruikers niet weten
7.1 10 GB onmiddellijk kopieren: --reflink en copy-on-write
Hier komt het echt verrassende deel. Op een modern copy-on-write-bestandssysteem zoals Btrfs of XFS hoeft cp de gegevens helemaal niet te dupliceren. Met --reflink maakt het een kopie die dezelfde gegevensblokken deelt als het origineel. De twee bestanden zien er volledig onafhankelijk uit, maar op schijf wijzen ze naar dezelfde bytes totdat een van beide wordt gewijzigd. Pas dan, en alleen voor de blokken die daadwerkelijk veranderen, worden er nieuwe gegevens geschreven. Dit heet copy-on-write.
$ cp --reflink=always huge.img huge-copy.img # near-instant, uses ~0 extra space
Een virtuele-machine-image van 10 GB op deze manier kopieren is in een fractie van een seconde klaar en voegt bijna niets toe aan je schijfgebruik. Sinds coreutils 9.0 (2021) probeert GNU cp automatisch een reflink (--reflink=auto) en valt het stilletjes terug op een gewone kopie op bestandssystemen die het niet aankunnen, dus op het juiste bestandssysteem krijg je dit misschien al gratis. macOS met APFS ondersteunt dezelfde copy-on-write-truc.
Een reflink-kopie is geen link en geen snapshot: het is een echt, apart bestand dat toevallig opslag deelt totdat je het bewerkt. Het geeft je de veiligheid van een kopie met de snelheid en ruimte van een link.
7.2 cp leest en schrijft; mv doet vaak geen van beide
Mensen behandelen cp en mv als een bijeenhorend paar, maar onder de motorkap zijn ze heel verschillend. Binnen een enkel bestandssysteem verandert mv alleen een naam in een map; de gegevens bewegen nooit, en daarom is een enorm bestand verplaatsen onmiddellijk. cp leest altijd elke byte van de bron en schrijft die weer weg, dus datzelfde enorme bestand kopieren kost echte tijd en verdubbelt de gebruikte ruimte. Zodra mv naar een ander bestandssysteem gaat, kan het echter niet gewoon hernoemen, dus valt het terug op het kopieren van de gegevens en daarna het verwijderen van het origineel, wat precies is wat cp doet plus een rm.
Daarom laat een kopie het origineel op zijn plaats en een verplaatsing niet, en daarom kan een onderbroken mv tussen schijven gevaarlijker zijn dan een onderbroken cp.
7.3 Er is geen ongedaan maken, en de bron is niet altijd veilig
Het beroemde gevaar van cp zit bij de bestemming: cp a b vernietigt wat b ook was, zonder bevestiging en zonder prullenbak. Er is geen ongedaan maken. Maar er is een subtielere valkuil. Een bestand op zichzelf kopieren wordt opgemerkt en geweigerd:
$ cp a a
cp: 'a' and 'a' are the same file
Toch kan de shell dat voor cp verbergen. Een glob zoals cp * backup.txt in een map waar backup.txt al onder * valt, kan de bestemming als bron meesturen, en gecombineerd met andere bestanden is het resultaat zelden wat je bedoelde. Wanneer je met jokertekens kopieert, kijk dan goed naar wat de * daadwerkelijk uitbreidt.
7.4 Onder de motorkap: wat "kopieren" echt kost
Een traditionele cp is een kleine lus: open() de bron, open() (of maak) de bestemming, lees dan herhaaldelijk een blok bytes met read() en schrijf het weg met write() tot het einde van het bestand, en close() ten slotte beide. Moderne cp verbetert dit op drie manieren die het weten waard zijn.
| Techniek | Wat het doet |
|---|---|
Sparse-detectie (--sparse) |
Merkt lange reeksen nullen op en slaat het schrijven ervan over, zodat een grotendeels leeg bestand (zoals een VM-schijfimage) klein kopieert |
copy_file_range() |
Vraagt de kernel om de gegevens rechtstreeks te kopieren, zonder ze door het programma te trekken |
| Reflink (copy-on-write) | Deelt gegevensblokken met de bron totdat een bestand verandert |
Je hoeft niets hiervan met de hand aan te vragen; GNU cp kiest de snelste veilige methode voor het bestandssysteem waarop je zit. De sparse-afhandeling staat standaard op --sparse=auto, maar je kunt het forceren met --sparse=always of uitschakelen met --sparse=never. De les is dat "kopieer dit bestand" niet een vaste bewerking is. Wat het kost aan tijd en ruimte hangt af van het bestandssysteem onder je voeten.
7.5 Weten waar cp stopt
Een deel van expertise is weten wanneer een ander gereedschap beter past. cp is perfect voor een eenmalige, lokale kopie. Daarbuiten nemen anderen het over.
| Behoefte | Gebruik | Waarom |
|---|---|---|
| Mappen synchroniseren, alleen gewijzigde delen | rsync |
Kopieert alleen de verschillen en kan hervatten; ideaal voor herhaalde backups |
| Kopieren naar een andere machine | scp / rsync |
Kopieert over het netwerk met SSH |
| Verplaatsen binnen een bestandssysteem | mv |
Hernoemt onmiddellijk in plaats van gegevens te dupliceren |
| Een boom in een bestand bundelen | tar |
Behoudt de hele structuur en metadata als een enkel archief |
| Een hele schijf of partitie klonen | dd |
Kopieert ruwe blokken, inclusief het bestandssysteem zelf, niet alleen de bestanden erin |
Leer toch eerst cp. Het staat op elke machine waarop je ooit zult inloggen, ook op een reddingsshell, en alles wat rsync en tar doen is gebouwd op hetzelfde idee van een bron lezen en een getrouwe kopie schrijven.
8. Beste werkwijzen
- Ga ervan uit dat de bestemming wordt overschreven. Vraag je voor
cp a baf watbnu bevat. Er is geen ongedaan maken. Gebruik-ials je met de hand werkt en het niet zeker weet. - Gebruik
-aom een map te backuppen. Het kopieert recursief en behoudt rechten, tijdstempels en symbolische links, die een gewonecp -rstilletjes kan veranderen. - Let op de mapvalkuil. Bij
cp -r src dstverschilt het resultaat afhankelijk van ofdstbestaat. Gebruiksrc/.als je "de inhoud van src" bedoelt. - Zet een afsluitende schuine streep op een bestemmingsmap.
cp file dir/faalt luid alsdirontbreekt, in plaats van stilletjes een bestand met de naamdirte maken. - Verkies
rsyncvoor alles wat je herhaalt. Voor backups die je meer dan eens uitvoert, kopieertrsyncalleen wat er is veranderd en kan het hervatten na een onderbreking. - Grijp zonder aarzelen naar de handleiding. De gewoonte die beginners van professionals onderscheidt, is
man cptypen op het moment dat er een vraag opkomt.
$ man cp # the full manual page
$ cp --help # a quick flag summary (GNU)
$ info coreutils 'cp invocation' # the verbose GNU manual
Naar boven9. Veelgemaakte fouten
9.1 Drie veelvoorkomende mythes
| Mythe | Werkelijkheid |
|---|---|
"cp vraagt het voordat het overschrijft." |
Nee. Standaard overschrijft het stilletjes. Voeg -i of -n toe voor de veiligheid. |
"cp -p behoudt alles." |
Kale -p behoudt mode, eigenaar en tijdstempels, maar geen symlinks-als-links. Gebruik -a voor een getrouwe boom. |
| "Een groot bestand kopieren kost altijd veel ruimte." | Op Btrfs of XFS deelt een reflink-kopie blokken en gebruikt bijna niets totdat je de kopie bewerkt. |
9.2 Andere valkuilen om te vermijden
- Overschrijven zonder het te merken.
cp new importantvernietigtimportantzonder waarschuwing. Er is geen prullenbak en geen ongedaan maken. - Vergeten van
-rvoor een map.cp dir dstfaalt met "omitting directory". Voeg-rtoe, en let dan op de bestaat-of-niet-regel. - De dubbele-nesting-verrassing.
cp -r src dsteen tweede keer uitvoeren levertdst/srcop, niet nog eendst. Gebruiksrc/.om de inhoud te kopieren. - Rechten verliezen op systeembestanden. Een gewone kopie van een config of script krijgt je standaard-mode en een nieuw tijdstempel. Gebruik
-pof-awanneer dat telt. - Een kopie op dezelfde schijf als backup vertrouwen. Als de schijf faalt, gaan beide bestanden samen. Een echte backup staat op aparte opslag.
10. Samenvatting
Het commando cp lijkt triviaal, maar het is een heldere les in hoe Linux over bestanden, opslag en metadata denkt.
cpis kort voor "copy". Het leest een bron en schrijft een onafhankelijke kopie; het origineel is veilig, maar de bestemming wordt zonder waarschuwing overschreven.- Het stamt uit Unix in 1971 en draait vandaag op elk Unix-achtig systeem, al is wat het onder de motorkap doet veel slimmer geworden.
- Het laatste argument is de bestemming. Kopieren naar een bestaande map behoudt de bestandsnaam; meerdere bestanden kopieren vereist dat het laatste argument een map is.
- Mappen hebben
-r(recursief) nodig. Of de bestemming al bestaat verandert waar de bestanden terechtkomen; gebruiksrc/.om de inhoud te kopieren. -ivraagt het voor het overschrijven,-nslaat bestaande bestanden over,-vtoont voortgang,-bbewaart een backup van het oude bestand.-pbehoudt mode, eigenaar en tijdstempels;-ais de archief-snelkoppeling voor een getrouwe mapboom, inclusief symbolische links.-lmaakt een harde link en-seen symlink in plaats van een echte kopie; geen van beide is een backup, want de gegevens bestaan nog maar een keer.- Op Btrfs of XFS maakt
--reflinkeen copy-on-write-kopie die bijna onmiddellijk is en blokken deelt totdat een bestand verandert. - Weet waar
cpstopt:rsyncvoor herhaalde of externe kopieen,mvom binnen een bestandssysteem te verplaatsen, entarom een boom te bundelen. - Bij twijfel, typ
man cp.
Dit is de snelle referentie die het bewaren waard is:
cp a b copy file a to b (overwrites b silently)
cp a b c dir/ copy several files into a directory
cp -r dir dst copy a directory tree
cp -r src/. dst/ copy the CONTENTS of src into dst
cp -i a b ask before overwriting b
cp -n a b skip b if it already exists
cp -p a b keep mode, owner, and timestamps
cp -a dir dst faithful copy: recursive, all attributes, links kept
cp -b a b back up the old b as b~ before overwriting
cp --parents s/f d/ rebuild the source path under d/
cp --reflink=auto a b copy-on-write copy where the filesystem allows
Kleine commando's zoals cp verbergen een verrassende hoeveelheid van hoe Linux is gebouwd, en een enkele onvoorzichtige kopie kan uren werk ongedaan maken. Als je servers ertoe doen en je wilt ze laten backuppen en onderhouden door iemand die begrijpt wat er echt onder de motorkap gebeurt, dan is dat precies het soort werk waar ik graag bij help.


Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.


