Cp: verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 2: Regel 2:
  
 
  cp a b
 
  cp a b
 +
 +
Indien er geen absolute padnamen worden gebruikt, werkt <code>cp</code> ''locaal'', dus relatief tov. de huidige PWD (''Present Working Directory'') [https://unix.stackexchange.com/questions/188182/how-can-i-get-the-current-working-directory]
 +
 +
== Kopiëer los van PWD ==
 +
 +
Je kunt absolute padnamen gebruiken. Op die manier vindt kopiëren plaats, los van de huidige PWD. Voorbeeld:
 +
 +
<pre>
 +
cp /tmp/test.leeg /home/strompf/Desktop
 +
</pre>
  
 
== Kopiëer een map met inhoud ==
 
== Kopiëer een map met inhoud ==

Versie van 21 jul 2019 11:17

Kopiëer een bestand

cp a b

Indien er geen absolute padnamen worden gebruikt, werkt cp locaal, dus relatief tov. de huidige PWD (Present Working Directory) [1]

Kopiëer los van PWD

Je kunt absolute padnamen gebruiken. Op die manier vindt kopiëren plaats, los van de huidige PWD. Voorbeeld:

cp /tmp/test.leeg /home/strompf/Desktop

Kopiëer een map met inhoud

Bv.:

cp -r /media/sda1 /media/BackUp

Nu wordt er een map /media/Backup/sda1 aangemaakt en gevuld.

Kopiëer de inhoud van een map

Voorbeelden:

cp -r * ~/in1
cp -r ~/in1/* .
# Kopiëer de inhoud van map "test.example.com" naar map "example.com"
# Let op: Map "example.com" moet al bestaan
#
cp -r test.example.com/* example.com   # De doelmap 'example.com' moet al bestaan

cp -vrap

Hier kwam ik de attributen -rap tegen. Wat is dat?

  • -v - Verbose - Dit was een operatie die een paar minuten duurde. Vandaar
  • -r - Recursie
  • -a - Archive - Misschien dat een archief-bit wordt behouden?
  • -p - Preserve - Behoud mode, ownership en timestamps.

Kopiëren van dot-bestanden

Zie Dot-bestanden kopiëren en verplaatsen

Kopiëren zonder overschrijving

-n [2]

Argument list too long-error (juni 2019)

Het probleem

In een map met veel bestanden:

cp Koolborstels* tmp

bash: /bin/cp: Argument list too long

Oorzaak

Het commando cp Koolborstels* tmp wordt eerst geëxpandeerd om alle bestanden in de map te incorporeren. Binnen operating systems is er een maximum hoeveelheid geheugenruimte die daarvoor beschikbaar is. Die kun je zien mbv. GETCONF. Voorbeeld:

getconf ARG_MAX

2097152

En dit is 2097152/1024 = 2.048 KB = 2 MB.

Workaround met een loop

Er zijn diverse oplossingen. Eentje is door kopiëren in een loop te doen, waarbij er per keer maar één bestand wordt gekopiëerd.

Om te beginnen (ls is gemakkelijker voor testen):

for i in ./*; do ls "$i"; done

Dit toont alle bestanden in de map.

Dit sluit beter aan bij de situatie hierboven:

for i in ./Koolborstel*; do ls "$i"; done

En dit is de uiteindelijke oplossing:

for i in ./Koolborstel*; do cp "$i" /tmp -v; done

Met -v zodat je weet waar-ie in Godsnaam mee bezig is.

Bronnen