Ga naar inhoud

Het cp commando

Controleren of cp aanwezig is

Het cp-commando is een van de meest gebruikte commandoโ€™s in Linux en staat bijna altijd standaard op je systeem geรฏnstalleerd.
Het maakt deel uit van het pakket GNU coreutils, dat basiscommandoโ€™s levert zoals ls, mv, rm, en cat.

Wil je controleren of cp aanwezig is, dan kun je de versie opvragen:

cp --version
Voorbeeldoutput
cp (GNU coreutils) 9.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.

โš™๏ธ Installeren van cp

Het commando cp maakt deel uit van het pakket GNU coreutils.
Dit pakket bevat de meest gebruikte basiscommandoโ€™s in Linux, zoals ls, mv, rm, en cat.

๐Ÿ‘‰ Daarom is cp op vrijwel alle Linux-distributies standaard geรฏnstalleerd, inclusief Debian en Ubuntu.
Alleen in uitzonderlijke gevallen, zoals zeer minimale systemen of custom builds, moet je het handmatig installeren.

Installatie op Debian/Ubuntu:

sudo apt update
sudo apt install coreutils

Voorbeeldoutput
cp (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Hieronder vind je enkele veelgebruikte combinaties van het cp-commando:

  • cp bestand.txt backup.txt โ†’ Kopieer een bestand
Voorbeeld gebruik van cp bestand.txt backup.txt

Commando:

cp bestand.txt backup.txt
Voorbeeldoutput:
# Er is nu een nieuw bestand backup.txt

  • cp bestand.txt /map/ โ†’ Kopieer bestand naar een map
Voorbeeld gebruik van cp bestand.txt /map/

Commando:

cp bestand.txt /map/
Voorbeeldoutput:
/map/bestand.txt

  • cp -r map1 map2 โ†’ Recursief hele map kopiรซren
Voorbeeld gebruik van cp -r

Commando:

cp -r project/ project_backup/
Voorbeeldoutput:
project_backup bevat nu alle bestanden uit project

  • cp -i bestand.txt backup.txt โ†’ Vraagt bevestiging vรณรณr overschrijven

  • cp -u bestand.txt backup.txt โ†’ Kopieert alleen als bron nieuwer is

  • cp -v bestand.txt backup.txt โ†’ Laat zien wat er gekopieerd wordt

  • cp -p bestand.txt backup.txt โ†’ Bewaart permissies & tijdstempels

  • cp -a map1 map2 โ†’ Archiveer modus (behoud structuur, permissies, symlinks)

  • cp -n bestand.txt backup.txt โ†’ Overschrijft nooit bestaande bestanden

  • cp -t map/ bestand1 bestand2 โ†’ Kopieer meerdere bestanden in รฉรฉn map

  • cp --parents file.txt dir/ โ†’ Kopieer bestand met de hele padstructuur

  • cp -R --remove-destination โ†’ Vervangt bestemming i.p.v. te overschrijven

Het cp-commando heeft weinig configuratie, maar je kunt aliases maken voor veiliger gebruik.

1. Per gebruiker instellen

Plaats instellingen in je shell-configuratie:

alias cp='cp -i'

Dit zorgt dat je altijd bevestiging moet geven voor overschrijven.

2. System-wide instellen

Plaats dezelfde alias in /etc/bash.bashrc of /etc/profile.

Voordelen: - Voorkomt dat bestanden per ongeluk overschreven worden.

Logging van het cp-commando

Het cp-commando schrijft zelf geen logbestanden weg.
Wil je gebruik van cp monitoren, dan kan dat met auditd.

Voorbeeld auditd regel

sudo auditctl -w /bin/cp -p x -k cp_monitor
  • -w /bin/cp โ†’ bewaak het bestand /bin/cp
  • -p x โ†’ log bij uitvoeren
  • -k cp_monitor โ†’ tag voor herkenning

Logs bekijken:

ausearch -k cp_monitor

Of rechtstreeks in:

less /var/log/audit/audit.log

Coreutils en het cp-commando

Het cp-commando maakt deel uit van coreutils.
Je kunt cp dus niet apart updaten, alleen het hele pakket.

sudo apt update
sudo apt install --only-upgrade coreutils

Verwijderen van cp

Het cp-commando is een fundamenteel onderdeel van Linux.
Het verwijderen kan scripts of systeemfunctionaliteit breken.
Gebruik liever permissies of een alias als je het wilt beperken.

Voorbeeld alias om cp te blokkeren:

alias cp='echo "cp is uitgeschakeld"'

Permissies aanpassen:

sudo chmod 700 /bin/cp
(Alleen root kan het uitvoeren)

๐Ÿ“– Handleiding

De ingebouwde handleiding van Linux-commandoโ€™s is altijd beschikbaar via man.
Voor cp:

man cp
Voorbeeld
CP(1)                      User Commands                     CP(1)

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.