Het SCP-commando gebruiken om bestanden te kopiëren en over te zetten in Linux
Secure Copy Protocol (SCP) is een commando dat efficiënte en veilige bestandsoverdracht tussen twee systemen via een netwerk mogelijk maakt. Het gebruikt Secure Shell (SSH) om de systemen te verifiëren en de gegevens te versleutelen.
Het SCP-commando stroomlijnt de gegevensoverdracht tussen Linux-systemen omdat beheerders niet op beide servers hoeven in te loggen. Bovendien is het veiliger dan andere methoden zoals het file transfer protocol (FTP), dat ook vaak wordt gebruikt voor het beheren van een systeem op afstand.
In dit artikel leer je hoe je het SCP-commando gebruikt op een remote host, zoals een virtual private server (VPS). We beschrijven de syntaxis van het commando en geven SCP-voorbeelden zodat je beter begrijpt hoe het werkt.
SCP-commando-syntaxis
De basis syntaxis van SCP voor het overzetten van een bestand tussen twee verschillende externe servers is als volgt:
scp [opties] [bron gebruikersnaam@IP]:/[directory en bestandsnaam] [doel gebruikersnaam@IP]:/[doel directory]
Uitleg van het commando:
- [opties] ‒ aanpassingen om het gedrag van het SCP-commando te wijzigen.
- [bron gebruikersnaam@IP] ‒ de gebruikersnaam en het IP-adres van het bronsysteem.
- :/ ‒ scheidingsteken tussen systeemadres en directorypad.
- [directory en bestandsnaam] ‒ de locatie en naam van het bestand.
- [doel gebruikersnaam@IP] ‒ de gebruikersnaam en het IP-adres van het doelsysteem.
- [doel directory] ‒ de doelmap waarin de bestanden worden geplaatst.
Voorbeeld van een SCP-commando
Een voorbeeld om bestanden tussen twee externe systemen te kopiëren:
scp root@162.168.1.1:/media/scp.png hostinger@162.168.1.2:/desktop/destination
Zorg ervoor dat roottoegang is ingeschakeld op de externe machine. Als je een andere account gebruikt, controleer dan of deze schrijfrechten heeft voor de doelmap. Anders kun je alleen bestanden overzetten naar de homedirectory van de gebruiker.
Kopiëren naar of van een localhost
Als je naar of vanaf een lokale host kopieert, laat je het IP-adres en het pad zoals /desktop/folder_name weg. Het commando ziet er dan als volgt uit:
scp scp.png hostinger@162.168.1.2:/desktop/destination
Bestanden kopiëren met het SCP-commando
In de volgende secties worden enkele praktische toepassingen van het SCP-commando besproken om bestanden over te zetten tussen verschillende systemen.
Waarschuwing! Wees voorzichtig bij het gebruik van SCP-commando's, aangezien bestanden en mappen met dezelfde naam mogelijk worden overschreven.
SCP-commando gebruiken met Hostinger VPS
Om het SCP-commando uit te voeren, moet je toegang hebben tot de bash-shell van de bronmachine. Voor een externe server, zoals een VPS, kun je verbinding maken via SSH met PuTTY of de Terminal van je computer.
Als je Hostinger’s VPS-hosting gebruikt, kun je de Browser Terminal gebruiken in het serveroverzicht in de ledenomgeving. Hiermee kun je rechtstreeks via een webbrowser verbinding maken met een externe server en commando’s uitvoeren, wat de taak efficiënter maakt.
Bovendien gebruikt onze Browser Terminal het VNC-protocol om toegang te krijgen tot de externe server, waardoor je SSH-commando’s zoals SCP kunt uitvoeren, zelfs wanneer het doelsysteem de verbindingspoort sluit.
Kodee, de AI-assistent van Hostinger, is toegankelijk vanuit het serveroverzicht. Deze functie laat je eenvoudige prompts gebruiken om kant-en-klare SCP-commando’s te genereren op basis van jouw behoeften, wat de efficiëntie van het beheer verbetert.
Bijvoorbeeld, je kunt invoeren:
“Genereer het SCP-commando om het bestand config.yaml van het pad /web_app/configuration op mijn huidige server over te zetten naar de map /live_app/config op mijn VPS. De gebruikersnaam van het doelsysteem is root en het IP-adres is 168.162.1.2.“
Kodee genereert het volledige commando, dat je kunt kopiëren en plakken in de Browser Terminal, zoals het volgende:
Kopiëren van een lokale server naar een externe host
Het gebruik van het SCP-commando om bestanden van een lokaal systeem naar een externe host, zoals een VPS, te kopiëren, vereenvoudigt het implementatieproces van webapplicaties. Hiermee kun je snel bijgewerkte bestanden vanuit een lokale ontwikkelomgeving naar de live server sturen.
Bijvoorbeeld, we kopiëren het lokale bestand scp.zip naar een externe server met de gebruiker root. Om dit te doen, geef je de gebruikersnaam en het IP-adres van de externe server op:
scp /users/Hostinger/desktop/scp.zip root@162.168.1.2:/writing/article
De Terminal vraagt je om het wachtwoord van de gebruiker op de externe machine in te voeren als je geen SSH-keypair hebt ingesteld. Het toont ook een voortgangsmeter, zoals hieronder:
Zodra dit is voltooid, kun je in de Terminal van het doelsysteem het Linux-commando unzip gebruiken om het bestand uit te pakken.
Het SCP-commando maakt gebruik van de standaard SSH-poort 22 om bestanden veilig te kopiëren. Serverbeheerders kunnen echter een andere luisterpoort instellen om ongeautoriseerde toegang te voorkomen. In dat geval voeg je de optie -P toe om een aangepaste SCP-poort in te schakelen:
scp -P 2322 /users/Hostinger/desktop/scp.zip root@162.168.1.2:/writing/article
Om de naam van het verzonden bestand te wijzigen, geef je de nieuwe naam op in je doeldirectory. Hier is een voorbeeld van het SCP-commando dat scp.zip hernoemd naar howtoscp.zip:
scp /users/Hostinger/desktop/scp.zip root@162.168.1.2:/writing/article/howtoscp.zip
Bovendien kun je met het SCP-commando mappen recursief kopiëren, waardoor je meerdere bestanden binnen een map tegelijkertijd kunt overzetten. Gebruik hiervoor scp -r en specificeer de map die je wilt overzetten:
scp -r /users/Hostinger/desktop root@162.168.1.2:/writing/article
Het bovenstaande commando kopieert de inhoud van de map desktop naar de externe directory /writing/article, inclusief eventuele submappen.
Als alternatief kun je meerdere bestanden kopiëren door hun namen op te geven, zoals in het volgende voorbeeld:
scp file1.txt file2.txt file3.txt root@162.168.1.2:/writing/article
Tip van een pro
Om het volledige pad van een directory te vinden, navigeer je naar de betreffende directory en gebruik je het pwd-commando.
Tip van een pro
Om het volledige pad van een directory te vinden, navigeer je naar de betreffende directory en gebruik je het pwd-commando.
Overzetten van een extern bestand naar een lokale machine
Om een SCP-overdracht van een extern systeem naar een lokaal systeem te starten, verwissel je de plaats van de bron en de bestemming in de syntaxis. Dit verbetert de efficiëntie van applicatieontwikkeling, omdat je projectbestanden eenvoudig offline kunt downloaden en bewerken.
Bijvoorbeeld, gebruik het volgende commando om het bestand scp.zip van een externe VPS naar een lokale machine te halen:
scp root@162.168.1.2:/writing/articles/scp.zip Users/Hostinger/Desktop
Bij het uitvoeren van dit commando verschijnt de SSH-inlogprompt, waarbij om het gebruikerswachtwoord wordt gevraagd. Als je authenticatie met sudo-rechten op de externe server uitschakelt en openbare sleutelauthenticatie inschakelt, verschijnt deze prompt niet.
Veilig verplaatsen van een bestand tussen externe hosts
Naast het overzetten naar of van de huidige server kun je met SCP-bestanden verplaatsen tussen twee externe Linux-machines. Voer hiervoor het commando uit op je lokale computer en gebruik de adressen van de externe systemen als bron en bestemming.
Als je meerdere projecten host op verschillende externe systemen, kan dit de efficiëntie verbeteren. In plaats van afzonderlijk in te loggen op meerdere systemen, kun je bestanden direct tussen hen overzetten vanaf je huidige computer.
Bijvoorbeeld, voer het volgende commando uit om het externe bestand scp.zip over te zetten van root@162.168.1.2 naar hostinger@162.168.1.1:
scp root@162.168.1.2:/writing/article/scp.zip hostinger@162.168.1.1:/publishing
Het kopiëren van bestanden tussen twee externe servers vereist de SSH-wachtwoorden van beide accounts.
Standaard verzendt het SCP-commando de gegevens direct van de eerste externe computer naar de tweede. Als je de operatie via je huidige lokale systeem wilt omleiden, voeg je de optie -3 toe, zoals in het volgende commando:
scp -3 root@162.168.1.2:/writing/article/scp.zip hostinger@162.168.1.1:/publishing
Gebruik deze optie als je een netwerkfout tegenkomt tijdens de overdracht. Dit gebeurt meestal wanneer het bronsysteem geen toegang heeft tot het doelsysteem vanwege een gebrek aan directe verbinding.
Het omleiden van het SCP-commando naar de lokale host zorgt ervoor dat de doelserver bestanden ontvangt van je computer in plaats van van het bronsysteem. Dit proces duurt echter langer en laat informatie zoals de voortgangsbalk weg.
Het gebruik van het SCP-commando met opties
Er zijn verschillende opties voor het SCP-commando, die als parameters dienen om het gedrag van de gegevensoverdracht aan te passen. Ze zijn handig voor gebruikers met geavanceerde technische kennis die bestanden op een specifieke manier willen kopiëren, afgestemd op hun behoeften en beveiligingseisen.
Opties kunnen zowel in een korte vorm (-o) als een beschrijvende equivalent (-option) worden gebruikt. Beide werken op een vergelijkbare manier, maar sommige commandohulpprogramma’s bieden mogelijk geen korte versie.
In tegenstelling tot andere Linux-commando’s kun je niet de parameter -help gebruiken om de handleiding en beschikbare opties van SCP weer te geven. In plaats daarvan kun je dit doen door SCP zonder parameters uit te voeren:
scp
Een veelgebruikte SCP-optie is -q, waarmee je het bestand in stille modus kunt kopiëren. Dit schakelt de voortgangsbalk, waarschuwingen en diagnostische berichten uit. Hier is een voorbeeld:
scp -q /users/Hostinger/desktop/scp.zip root@162.168.1.2
Gebruik de parameter -v om uitgebreide uitvoer (verbose output) in te schakelen. Dit geeft gedetailleerde foutopsporingsberichten over het kopieerproces, wat helpt bij het oplossen van problemen. Het commando ziet er als volgt uit:
scp -v /users/Hostinger/desktop/scp.zip root@162.168.1.2
De opties -4 en -6 bepalen de internetprotocolversie die wordt gebruikt voor gegevensoverdracht – IPv4 of IPv6. Wanneer je deze gebruikt, wijzig je het adres van de externe locatie overeenkomstig, zoals in het volgende voorbeeld:
scp -4 root@162.168.1.2:/users/Hostinger/desktop/scp.zip
Gebruik de optie -p om de gegevens van het bronbestand te behouden, zoals modus, wijzigings- en toegangstijden. Let op dat dit verschilt van de hoofdletteroptie -P voor het wijzigen van de overdrachtspoort. Hier is de syntaxis:
scp -p /users/Hostinger/desktop/scp.zip root@162.168.1.2
Belangrijk! Wees voorzichtig bij het gebruiken van SCP-opdrachten, aangezien ze hoofdlettergevoelig zijn.
De optie -C comprimeert de gekopieerde bestanden of directories tijdens het overdrachtsproces. Het werkt met alle bestanden, behalve archieven, zoals .zip en .rar. Zo ziet het commando eruit:
scp -C Folder root@162.168.1.2
De kleine letter -c optie laat je het encryptie-algoritme van de clientmachine specificeren. Standaard is dit ingesteld op AnyStdCipher, maar je kunt andere waarden gebruiken zoals aes256-ctr, aes256-cbc, en 3des-cbc.
Om alle beschikbare waarden te controleren, kun je de Ciphers-sectie in de SSH_config-handleiding raadplegen. Hier is een voorbeeld van een SCP-opdracht met 3des-cbc encryptie:
scp -c 3des-cbc /users/Hostinger/desktop/scp.zip root@162.168.1.2
Als je een bestand op een bepaalde manier wilt kopiëren, maar het SCP-commando geen geschikte optie heeft, gebruik dan de optie -o. Hiermee kun je de SSH-opties in het configuratiebestand toepassen op je SCP-commando.
Om de optie te gebruiken, voeg je de sleutel en waarde van de instelling tussen aanhalingstekens toe, zoals in het volgende syntaxisvoorbeeld:
scp -o "option=value" /directory/path/file
Elke -o optie accepteert slechts één paar als waarde. Als je meerdere SSH-instellingen wilt doorgeven, voeg je meer opties toe. Bijvoorbeeld, het volgende SCP-commando zal maximaal twee keer verbinding maken met het doelapparaat en de poging na vijf seconden tijdslimiet beëindigen:
scp -o "ConnectionAttempts=2" -o="ConnectTimeout=5" /users/scp.zip root@162.168.1.2
Dit zal het configuratiebestand niet wijzigen bij het doorgeven van de SSH-instellingen, aangezien deze alleen van toepassing zijn op je huidige SCP-sessie. Raadpleeg de SSH_config-handleiding voor meer informatie over de volledige sleutels en hun waarden.
Conclusie
Het Linux SCP-commando maakt veilige bestandsoverdracht tussen systemen mogelijk via versleutelde SSH, en biedt een efficiënter en veiliger alternatief voor FTP. De syntaxis bevat opties, systeemadressen, bestandspaden en doelpaden, waarbij adressen en mappen worden weggelaten voor lokale overdragen.
SCP maakt het niet alleen mogelijk om bestanden tussen lokale en externe systemen over te dragen, maar ook tussen twee externe systemen via een lokaal systeem. Opties zoals -P en -C kunnen het overdrachtsproces aanpassen.
Hostinger-gebruikers kunnen profiteren van onze AI-assistent, Kodee, voor eenvoudige SCP-commando generatie en een Browser-terminal voor het uitvoeren van opdrachten op een externe server via web browsers.
FAQs over het gebruik van SCP voor bestandsoverdracht
Hoe voer ik SCP uit op Windows?
Je kunt SCP op Windows uitvoeren met de PSCP-opdrachtregelhulpmiddel van PuTTY, die standaard wordt meegeleverd met de SSH-client. Om de opdracht te gebruiken, open je de Windows PowerShell-command line interface. Het heeft een vergelijkbare syntaxis als SCP, maar begint met pscp -scp.
Kan ik een wachtwoord meegeven in het SCP-commando?
Ja. Je kunt een wachtwoord meegeven met SCP in Linux met behulp van het sshpass-commando en de -p optie, of pscp met de -pw optie voor Windows. Voeg je SSH-wachtwoord toe na beide opties. De rest van de syntaxis blijft hetzelfde als een regulier SCP-commando.
Hoe stop of pauzeer ik SCP?
Pauzeer een proces door het stop-signaal (SIGTSTP) naar de terminal te sturen met de sneltoets Ctrl+Z. Om het proces te hervatten, stuur je het SIGCONT-signaal door fg in te typen. Als SIGCONT niet werkt, gebruik dan het rsync-hulpmiddel om te controleren of er inhoudsverschillen zijn tussen de systemen en kopieer alleen de bestanden die ontbreken in de doeldirectory.