scp-commando: gebruik en opties, mappen kopiƫren en poort opgeven

TestomgevingRHEL-familieAlmaLinux 9.8OpenSSH 9.9p1Ontvangende kant Debian 12 Ā· OpenSSH 9.2p1root-accountGecontroleerd op 2026-10-28

scp is de kopieertool waarmee je bestanden uitwisselt met een server waarmee je via SSH verbinding maakt. Als je met het scp-commando een bestand verstuurt, zet je net als bij cp eerst de bron en daarna de bestemming. Toen we bestanden en mappen van een AlmaLinux 9-server naar een Debian 12-server verstuurden en weer ophaalden, verliep de overdracht via het SFTP-protocol en kwam een bestand van 20MB binnen 1 seconde aan.

Alle uitvoer hieronder is letterlijk het resultaat van scp uit OpenSSH 9.9, uitgevoerd met het root-account aan de verzendende kant. Alleen de serveradressen en accountnamen zijn vervangen door voorbeeldwaarden.

1ļøāƒ£ Gebruik van scp en externe paden

Voor een pad op de externe server zet je [account@serveradres:]. Een pad zonder dubbele punt wordt gezien als een pad op de server waar je het commando uitvoert, dus de kant met de dubbele punt bepaalt of je verzendt of ontvangt.

🧭 Kopieerrichting van scp en externe paden
Uitlegdiagram
ā†”ļø Kopieerrichting
$ scp report.txt user@203.0.113.10:~/scp-test/user@203.0.113.10:~/scp-test/report.txt ./downloads/-3 user@203.0.113.10:~/scp-test/report.txt user@198.51.100.20:~/scp-test/
bronšŸ’» Server die het commando uitvoertreport.txt
āžœ
doelšŸ–„ļø Externe server203.0.113.10:~/scp-test/
bronšŸ–„ļø Externe server203.0.113.10:~/scp-test/report.txt
āžœ
doelšŸ’» Server die het commando uitvoert./downloads/
bronšŸ–„ļø Externe server A203.0.113.10:~/scp-test/report.txt
āžœ
DoorgiftešŸ’» Server die het commando uitvoert-3
āžœ
doelšŸ–„ļø Externe server B198.51.100.20:~/scp-test/
🧩 Vorm van het externe pad
user het account om mee te verbinden, 203.0.113.10 het serveradres of domein, :~/scp-test/ en na de dubbele punt het pad op die server (de tilde is de thuismap)
Staat het lokale bestand vooraan en het externe pad erachter, dan verzend je. Eindigt het pad na de dubbele punt op een slash, dan wordt het bestand onder dezelfde naam in die map opgeslagen.
Staat het externe pad vooraan, dan ontvang je. Het ontvangen bestand komt terecht op het lokale pad dat je erachter schrijft.
Zijn bron en bestemming allebei externe servers, dan lopen de gegevens vanaf OpenSSH 8.7 via de server die het commando uitvoert. Dat is dezelfde methode als met -3.

Stuurt report.txt uit de huidige map naar de map scp-test onder de thuismap van de externe server.

scp report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.1KB/s   00:00

Na de overdracht verschijnen bestandsnaam, voortgang, grootte, snelheid en duur op ƩƩn regel. Deze voortgangsweergave verschijnt alleen wanneer je in een terminal werkt. Stuur je de uitvoer door naar een bestand, dan blijft dat bestand dus leeg.

Om iets op te halen zet je het externe pad vooraan en het lokale opslagpad erachter.

scp user@203.0.113.10:~/scp-test/report.txt ./downloads/
report.txt                                    100%   14     2.7KB/s   00:00

Eindigt het bestemmingspad op een bestandsnaam in plaats van een map, dan wordt onder die naam opgeslagen. Na verzending met het commando hieronder stond report.txt in de ontvangende map als report-1028.txt.

scp report.txt user@203.0.113.10:~/scp-test/report-1028.txt
report.txt                                    100%   14     4.6KB/s   00:00

šŸ”² Simulator van het scp-commando

In de simulator hieronder kun je zelf commando's voor verzenden, ontvangen en mappen kopiƫren invoeren en de uitvoer per optie bekijken.

Simulator van het scp-commandoOpenSSH 9.9
[root@server work]#
Werkt alleen in je browser. Bekijk de externe bestanden in de lijst links en haal met ↑↓ eerdere commando's terug.

2ļøāƒ£ Opties van het scp-commando

Opties staan direct na scp, vóór de bron. -P voor de poort is een hoofdletter, de kleine -p behoudt tijden en rechten, dus als je de hoofdletter verwisselt, gebeurt er iets anders.

-l stelt de bovengrens van de overdrachtssnelheid in Kbit/s in. Zonder opties was een bestand van 20MB binnen 1 seconde overgezet.

scp backup.tar.gz user@203.0.113.10:~/scp-test/
backup.tar.gz                                 100%   20MB  53.6MB/s   00:00

-l 8000 komt neer op ongeveer 1,000KB per seconde. Met -l 8000 toonde de voortgangsweergave voor hetzelfde bestand 996.5KB/s en duurde de overdracht 20 seconden.

scp -l 8000 backup.tar.gz user@203.0.113.10:~/scp-test/backup-l.tar.gz
backup.tar.gz                                 100%   20MB 996.5KB/s   00:20

-C comprimeert de gegevens op de SSH-verbinding op dezelfde manier als gzip. We verstuurden een logbestand van 19MB met herhaalde zinnen telkens drie keer, en tussen deze twee servers was de variant met -C iets trager.

CommandoBestandUitvoeringstijdSnelheid in voortgangsweergave
scp backup.tar.gz20MB0,68 s53.6MB/s
scp -l 8000 backup.tar.gz20MB20.82 s996.5KB/s
scp access.log (3 keer)19MB0.79~0.89 s—
scp -C access.log (3 keer)19MB0.84~0.97 s—

De uitvoeringstijd loopt van de start van het commando tot en met verbinden en het einde van de overdracht. Ook de ssh-handleiding zegt dat compressie helpt op trage lijnen en de overdracht op snelle netwerken vertraagt.

-v toont het verloop van verbinden tot overdracht als debug1-regels, dus daarmee zoek je de oorzaak als er geen verbinding komt of de authenticatie vastloopt. De uitvoer is lang, daarom hebben we met grep alleen de regels voor authenticatie en overdracht geselecteerd.

scp -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending subsystem: sftp
Transferred: sent 2536, received 3248 bytes, in 0.1 seconds

De regel [Sending subsystem: sftp] betekent dat scp het bestand via het SFTP-protocol heeft verstuurd. Vanaf OpenSSH 9.0 gebruikt scp standaard SFTP. Met -O wordt via het oude SCP-protocol overgedragen en verschijnt op dezelfde plek [Sending command: scp -v -t].

scp -O -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending command: scp -v -t ~/scp-test/
Sending file modes: C0600 14 report.txt
Transferred: sent 2328, received 3036 bytes, in 0.1 seconds

šŸ“Œ Belangrijkste opties: resultaten uit dit artikel

OptieTaakResultaat in dit artikel
-PGeeft de SSH-verbindingspoort opPoort 22: report.txt overgezet, gesloten poort 2222: eindigde met [Connection timed out]
-iGeeft het privƩsleutelbestand voor authenticatie met een publieke sleutel opreport.txt overgezet met ~/.ssh/id_ed25519 opgegeven
-rKopieert bestanden en submappen in de mapDe mappen css en images blijven aan de ontvangende kant in de oorspronkelijke structuur staan; zonder de optie geen overdracht door de fout [not a regular file]
-pBehoudt de wijzigingstijd, toegangstijd en rechten van de bronWijzigingstijd behouden; aan de ontvangende kant in dit artikel bleef recht 600 alleen behouden bij het bestand dat met -O -p is verstuurd
-CComprimeert de gegevens op de SSH-verbindingBij het log van 19MB tussen de twee servers in dit artikel was de variant met de optie iets trager
-lStelt de bovengrens van de overdrachtssnelheid in Kbit/s inMet -l 8000: 20MB op 996.5KB/s, 20.82 seconden
-vToont het verloop van verbinden tot overdracht als debug1-regelsSFTP-overdracht bevestigd met de regel [Sending subsystem: sftp]
-3Zet gegevens tussen twee externe servers over via de server die het commando uitvoert (standaard vanaf OpenSSH 8.7)report.txt overgezet met twee mappen van dezelfde server als bron en bestemming
-OZet over via het oude SCP-protocolIn de uitvoer van -v verschijnt [Sending command: scp -v -t]; paden met spaties hebben een extra backslash nodig
-oGeeft een optie in ssh_config-vorm door aan sshWachttijd op 10 seconden gezet met ConnectTimeout=10 en [Connection timed out] bevestigd

šŸ“Ž Andere opties: volgens de officiĆ«le handleiding

OptieTaak
-qSchakelt de voortgangsweergave en de waarschuwingen en diagnostische meldingen van ssh uit
-JVerbindt eerst met een jump host en stelt vandaar TCP-doorsturing naar de eindbestemming in (verkorte vorm van de instelling ProxyJump, meerdere hops scheiden met komma's)
-FGeeft een ander bestand op als ssh-configuratiebestand per gebruiker (wordt rechtstreeks aan ssh doorgegeven)
-4Dwingt het gebruik van alleen IPv4-adressen af
-6Dwingt het gebruik van alleen IPv6-adressen af

3ļøāƒ£ Mappen kopiĆ«ren met scp en tijden behouden

Geef je een map op zonder optie, dan meldt scp dat het geen gewoon bestand is en voert het de overdracht niet uit.

scp site-files user@203.0.113.10:~/scp-test/
scp: local "site-files" is not a regular file
scp: failed to upload file site-files to ~/scp-test/

Met -r worden de bestanden en submappen in de map gekopieerd.

scp -r site-files user@203.0.113.10:~/scp-test/
logo.png                                      100%   48KB   4.7MB/s   00:00
style.css                                     100%   15     5.0KB/s   00:00
index.html                                    100%   15     5.2KB/s   00:00

De uitvoer toont alleen bestandsnamen. In de find-uitvoer aan de ontvangende kant stonden onder site-files de mappen css en images in de oorspronkelijke structuur.

ssh user@203.0.113.10 'cd ~/scp-test && find site-files'
site-files
site-files/images
site-files/images/logo.png
site-files/index.html
site-files/css
site-files/css/style.css

-r volgt symbolische koppelingen in de map en kopieert de oorspronkelijke bestanden, dus voor mappen waarin koppelingen koppelingen moeten blijven, past rsync -a beter.

-p behoudt de wijzigingstijd, toegangstijd en rechten van de bron. Vóór het verzenden hebben we de wijzigingstijd van het bronbestand report.txt op 1 oktober 2026 00:00 (UTC) en de rechten op 600 gezet. De tijdzone van de ontvangende server is UTC, daarom is ook ls aan de verzendende kant met TZ=UTC uitgevoerd.

TZ=UTC ls -l report.txt
-rw------- 1 root root 14 Oct  1 00:00 report.txt
scp -p report.txt user@203.0.113.10:~/scp-test/report-p.txt
report.txt                                    100%   14     4.7KB/s   00:00
scp -O -p report.txt user@203.0.113.10:~/scp-test/report-Op.txt
report.txt                                    100%   14     4.2KB/s   00:00
ssh user@203.0.113.10 'ls -l ~/scp-test/report.txt ~/scp-test/report-p.txt ~/scp-test/report-Op.txt'
-rw------- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-Op.txt
-rw-rw-r-- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-p.txt
-rw-rw-r-- 1 user user 14 Oct 28 06:17 /home/user/scp-test/report.txt

report-p.txt (verstuurd met -p) en report-Op.txt (verstuurd met -O -p) behielden de oorspronkelijke tijd, report.txt zonder opties werd opgeslagen met de verzendtijd. Op de ontvangende server kregen bestanden die via SFTP zijn verstuurd ook met -p de rechten 664, en alleen het bestand dat via het oude SCP-protocol (-O) is verstuurd behield 600.

Controleer daarom bij bestanden waarvan de rechten gelijk moeten zijn aan de bron na het verzenden de rechten met ls -l aan de ontvangende kant.

4ļøāƒ£ Poort en sleutelbestand opgeven bij scp

Bij servers die niet bereikbaar zijn met standaardpoort 22 en de standaardsleutel geef je de poort en sleutel vóór het verzenden zelf op. -P geeft de SSH-verbindingspoort op en -i het privésleutelbestand voor authenticatie met een publieke sleutel.

Hieronder staat een voorbeeld dat poort 22 en een sleutelbestand rechtstreeks opgeeft. Op een server met een gewijzigde poort schrijf je dat nummer in plaats van 22.

scp -P 22 -i ~/.ssh/id_ed25519 report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.3KB/s   00:00

Zonder -i worden net als bij ssh de sleutels met standaardnamen onder ~/.ssh (id_rsa, id_ecdsa, id_ed25519 enz.) om de beurt gebruikt.

Verstuur je vaak naar dezelfde server, zet dan een alias in ~/.ssh/config en typ in scp alleen die alias.

Host myserver
    HostName 203.0.113.10
    User user
    Port 22
    IdentityFile ~/.ssh/id_ed25519

De naam op de Host-regel wordt de alias, en de vier regels eronder vervangen het serveradres, account, de poort en het sleutelbestand. Ook het commando met alleen de alias eindigde met hetzelfde resultaat van ƩƩn regel als met volledig adres en sleutel.

scp report.txt myserver:~/scp-test/
report.txt                                    100%   14     4.2KB/s   00:00

-P, -i en aliassen gebruiken allemaal gewoon de ssh-verbindingsinstellingen, dus ook een sleutel maken en op de server registreren gaat hetzelfde als bij verbinden met het SSH-commando.

5ļøāƒ£ KopiĆ«ren tussen servers met scp

Ook als bron en bestemming allebei externe servers zijn, volstaat ƩƩn regel scp. Vanaf OpenSSH 8.7 worden de gegevens via de server overgezet die het commando uitvoert, en die methode is -3. De officiƫle release notes noemen als reden voor de nieuwe standaard dat de inloggegevens van de bestemmingsserver niet op de bronserver hoeven te staan.

De meting hieronder is uitgevoerd met twee mappen van dezelfde server als bron en bestemming. Is de bestemmingsserver een andere, dan pas je alleen het account en adres aan het eind aan.

scp -3 user@203.0.113.10:~/scp-test/report.txt user@203.0.113.10:~/scp-test/copy3/
report.txt                                    100%   14     2.5KB/s   00:00

Het is alsof het hoofdkantoor documenten tussen twee filialen ontvangt en weer doorstuurt.

De vroegere methode, waarbij de bronserver rechtstreeks naar de bestemmingsserver verstuurt, geef je op met -R. Daarvoor moet de bronserver zonder wachtwoord met de bestemmingsserver kunnen verbinden. Vanaf OpenSSH 10.6 toont -R een waarschuwing dat de optie wordt afgeschaft, en latere versies zullen deze optie negeren en met de methode -3 kopiƫren.

6ļøāƒ£ scp en rsync vergeleken

Voor een paar bestanden die je ƩƩn keer verstuurt, is scp genoeg. Wil je dezelfde map herhaaldelijk gelijktrekken of een onderbroken overdracht hervatten, dan past het rsync-commando. scp verstuurt bij elke uitvoering alle opgegeven bestanden opnieuw, rsync vergelijkt bron en bestemming en zet alleen gewijzigde bestanden over.

Onderdeelscprsync
OverdrachtsomvangBij elke uitvoering alle opgegeven bestandenAlleen bestanden die afwijken van de bron
Half ontvangen bestanden bewaren (--partial)āŒāœ…
Bestanden verwijderen die niet in de bron staan (--delete)āŒāœ…
Symbolische koppelingenVolgt ze en kopieert de bestandenMet -a blijven koppelingen behouden
Nodig aan de ontvangende kantSSH-toegang en SFTP-serverrsync aan beide kanten geĆÆnstalleerd

7ļøāƒ£ Foutmeldingen van het scp-commando en oplossingen

Als scp mislukt, staat de oorzaak meteen op de eerste regel van de uitvoer. In alle drie de gevallen waarin we bewust een fout veroorzaakten met een ontbrekend bestand, schrijfrechten en een verkeerde poort, stond de oorzaak op de eerste regel en was de exitcode steeds niet 0.

šŸ”² No such file or directory

Probeer je een bestand op te halen dat aan de externe kant niet bestaat, dan verschijnt [No such file or directory] samen met het pad.

scp user@203.0.113.10:~/scp-test/nofile.txt ./downloads/
scp: ~/scp-test/nofile.txt: No such file or directory

Bij verzenden geeft een ontbrekende bestemmingsmap dezelfde fout. scp maakt geen ontbrekende mappen aan, dus voer eerst via ssh mkdir -p uit om de map te maken.

scp report.txt user@203.0.113.10:~/scp-test/nodir/sub/
scp: dest open "scp-test/nodir/sub/": No such file or directory
scp: failed to upload file report.txt to ~/scp-test/nodir/sub/

šŸ”² Permission denied

Heeft de ontvangende map geen schrijfrecht, dan volgt [Permission denied] na [dest open]. Hieronder staat het resultaat van verzenden naar een map readonly met rechten 555.

scp report.txt user@203.0.113.10:~/scp-test/readonly/
scp: dest open "scp-test/readonly/report.txt": Permission denied
scp: failed to upload file report.txt to ~/scp-test/readonly/

Staat [account@serveradres:] vóór [Permission denied] en staat tussen haakjes een authenticatiemethode zoals publickey, dan is de verbinding bij de authenticatie geweigerd. Deze melding is de vorm die het programma ssh gebruikt als authenticatie mislukt, dus controleer eerst het met -i opgegeven sleutelbestand en de op de server geregistreerde publieke sleutel.

šŸ”² Connection timed out

Is het poortnummer fout of blokkeert een firewall die poort zodat er geen antwoord komt, dan wacht scp op de verbinding en eindigt het met [Connection timed out]. Hieronder staat het resultaat van verzenden naar de gesloten poort 2222 met een wachttijd van 10 seconden.

scp -P 2222 -o ConnectTimeout=10 report.txt user@203.0.113.10:~/scp-test/
ssh: connect to host 203.0.113.10 port 2222: Connection timed out
scp: Connection closed

Krijg je deze fout, controleer dan eerst of het nummer bij -P overeenkomt met de SSH-poort van de server.

šŸ”² Spaties en de tilde (~) in paden

Bij de huidige scp, die via SFTP overzet, hoef je een extern pad met spaties maar ƩƩn keer tussen enkele aanhalingstekens te zetten.

scp report.txt 'user@203.0.113.10:~/scp-test/my files/'
report.txt                                    100%   14     4.7KB/s   00:00

Toen we hetzelfde commando met -O via het oude SCP-protocol verstuurden, mislukte het met [ambiguous target]. Bij het oude SCP-protocol interpreteert de externe shell het pad namelijk nog een keer.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my files/'
scp: ambiguous target

Zet in dat geval een backslash vóór de spatie, zodat ook de externe shell het als één woord leest.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my\ files/'
report.txt                                    100%   14     4.5KB/s   00:00

Begint het pad na de dubbele punt zonder slash of tilde, dan wordt het verwerkt ten opzichte van de thuismap van het externe account.

scp report.txt user@203.0.113.10:scp-test/report-rel.txt
report.txt                                    100%   14     5.6KB/s   00:00

De officiƫle handleiding zegt -O te gebruiken als een oude SFTP-server een pad dat met een tilde begint niet naar de thuismap kan omzetten. In dat geval komt een pad ten opzichte van de thuismap zonder tilde, zoals hierboven, ook op dezelfde plek terecht.

šŸ”¢ FAQ & aanbevolen content

Bestaat er een bestand met dezelfde naam, dan wordt het zonder bevestiging door het nieuwe overschreven. Ook toen we dezelfde report.txt meerdere keren naar dezelfde map verstuurden, ging de overdracht telkens zonder vraag door. Bestanden die je wilt bewaren, verstuur je daarom met een andere naam aan het eind van het bestemmingspad.

Zet je * in het externe pad en sluit je het in met enkele aanhalingstekens, dan worden alle bestanden op de externe server met een passende naam opgehaald. Bij het ophalen van report-*.txt van de externe server werden de zes passende bestanden na elkaar overgezet. De aanhalingstekens voorkomen dat de shell van de server die het commando uitvoert * als eerste interpreteert.

Met -B draait scp in batchmodus, die niet om een wachtwoord of wachtwoordzin vraagt. Volgens de officiƫle handleiding kun je in deze modus geen wachtwoord invoeren, dus stel voor automatische taken zoals cron eerst sleutelauthenticatie in.

🧭 Aanbevolen content over netwerkcommando's 13 berichten · 2 bronnen
šŸ—‚ļø Netwerkcommando's
šŸ“„ ip-commando šŸ“„ netstat- en ifconfig-commando's šŸ“„ nmtui-commando
šŸ“„ SSH-commando šŸ“„ rsync-commando šŸ“„ wget-commando šŸ“„ rz- en sz-commando's šŸ“„ scp-commando
šŸ“„ host-commando šŸ“„ nslookup-commando
šŸ“„ iptables-commando šŸ“„ firewall-cmd-commando šŸ“„ certbot-commando

ā„¹ļø Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaaltĀ (bij acties gaat het omlaag ↓)Ā wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 2   +   3   =