How to use SCP to transfer files between Linux and Raspberry PLC

Learn to use SSH with Industrial PLCs for Raspberry Pi automation
July 30, 2021 by
How to use SCP to transfer files between Linux and Raspberry PLC
Boot & Work Corp. S.L., Fernandez Queralt Martinez


Sometimes, when you are testing our devices, you need to send files from your Linux-based laptop to your industrial Raspberry PLC so that you can execute them.

Other times, you have to do the opposite and send either files or directories from your industrial Raspberry Pi PLC to your laptop.

Now, you no longer have to worry about sending files through email, or pendrive or any other way that makes you lose time. In this post, we explain you how to do it automatically thanks to industrial automation and industrial control.

Related links

How to

Connect to Raspberry Pi  PLC controller to Wi-Fi


How to

Find your perfect industrial Programmable Logic Controller


Raspberry Pi PLC

Family Products


Basics about

Raspberry Pi based PLC Analog Outputs


How to program

Program Raspberry Pi industrial PLC Interrupt inputs with Python


TouchBerry Pi

Family Products




According to Wikipedia, the Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Typical applications include remote command-line, login, and remote command execution, but any network service can be secured with SSH.

SSH provides a secure channel over an unsecured network by using client–server architecture, connecting an SSH client application with an SSH server. The protocol specification distinguishes between two major versions, referred to as SSH-1 and SSH-2. The standard TCP port for SSH is 22. SSH is generally used to access Unix-like operating systems, but it can also be used on Microsoft Windows. Windows 10 uses OpenSSH as its default SSH client and SSH server.


SCP stands for secure copy, which is a command-line utility that allows you to securely copy files and directories between two remote locations, from local to a remote system and from remote to a local system.

If you type the command below, you will see the following information:

man scp

SCP copies files between hosts on a network. It uses ssh for data transfer, and uses the same authentication and provides the same security as ssh.  SCP will ask for passwords or passphrases if they are needed for authentication.

The source and target may be specified as a local path name, a remote host with an optional path in the form [user@]host:[path], or a URI in the form scp://[user@]host[:port][/path].  Local file names can be made explicit using absolute or relative path names to avoid SCP treating file names containing ‘:’ as host specifiers.

When copying between two remote hosts, if the URI format is used, a port may only be specified on the target if the -3 option is used.

First of all, check that your SSH is activated:
sudo systemctl status ssh.service

If it is not, start it:

sudo systemctl start ssh.service

Then, we must have clear that the structure is always the same, with optional options after SCP:

SCP (From) (Where to) - How to use SCP to transfer files between Linux and Raspberry PLC

Assuming the following information about an Open Source PLC Raspberry Pi:

  • User: pi
  • ETH IP Address:
  • WLAN IP Address:

Let's see some examples!

Copy From Remote to Local Host

scp [email protected]:/home/pi/sample-file-from-raspberry.txt /home/user/file-in-linux-laptop.txt
scp [email protected]:/home/pi/sample-file-from-raspberry.txt /home/user/file-in-linux-laptop.txt

Copy From Local to Remote Host 

scp -r /home/user/test-directory [email protected]:/home/pi/
scp -r /home/user/test-directory [email protected]:/home/pi/

Check out the manual for more options and information about SCP:

man scp

​Search in our Blog

How to use SCP to transfer files between Linux and Raspberry PLC
Boot & Work Corp. S.L., Fernandez Queralt Martinez July 30, 2021
Share this post

Looking for your ideal Programmable Logic Controller?

Take a look at this product comparison with other industrial controllers Arduino-based. 

We are comparing inputs, outputs, communications and other features with the ones of the relevant brands.

Industrial PLC comparison >>>