- using the SCP command in SSH
- using Netcat
- using FTP
- using Python’s Simple HTTP Server
Using SCP (SSH)
SCP is a utility used to move files and directories securely via SSH. With the SCP command, you can transfer files from your computer to your Linux server and vice versa. As this utility uses SSH to move files, you’ll need the SSH credential of your server to transfer files.
SSH comes pre-installed on most Linux servers, but if not, you can install and enable it using the following steps.
Open the Ubuntu terminal and type.
$ sudo apt install -y openssh-server
$ sudo service ssh start
Upload files via SCP
Scp command follows this pattern
$ scp [Options] [Source] [Destination]
To transfer a file from your computer to a linux server, write these commands
$scp /path/of/your/local/file.ext [email protected]:/path/of/ file.ext -i key.pem
In the above command, first, you have to give the path of the file you want to copy from your computer to the Linux server, then the username and IP address of the Linux server, and the path where you want to copy the file on the Linux server fallowing this pattern ([email protected]: path/of/remote/file.ext).
After running this command, it will require the password of the Linux server user account
$ [email protected]’s password :
After entering the password, the file will be uploaded.
Download files via SCP
To download files from the Linux server to your computer, you need to provide SCP with the local path of the file or directory and the path on the Linux Server where you’d want your file to be uploaded.
$ scp [email protected]:/path/of/file.ext /path/to/destination
After running this command, it will require the authentication password of the linux server. Once you have entered the password, then the file will be copied safely to your computer.
SCP Command-Line Options
You can use different flags(known as command-line options) in the SCP command.
-p flag is used to change the port. By default, ssh uses the 22 port, but with the -p flag, we can change port 22 to something else, like 2222.
$ scp -p 2222 path/of/your/local/file.ext [email protected]: path/of/file.ext
-r flag is used to copy the folder and all of its content.
$ scp -r /path/of/your/local/folder [email protected]: /path/of/folder
-i flag is used to authenticating the connection using a cryptographic key pair stored in a file instead of a username and password.
$ scp -i path/of/your/local/file.ext [email protected]: path/of/file.ext
-c flag is used to compress the data that you want to transfer.
$ scp -c path/of/your/local/file.ext [email protected]: path/of/file.ext
-q flag is used to suppress the non-error message and progress meter.
$ scp -q /path/of/your/local/file.ext [email protected]: /path/of/file.ext
Transfer Files Using Netcat
Netcat is a Linux utility used for raw tcp/ip communication, transferring files, port scanning, and network troubleshooting, etc. It comes pre-installed in many Linux-based systems, and it is mainly used by Network Administrators.
If not already installed, you can install Netcat by typing the following command
$ sudo apt-get install netcat
To transfer files using Netcat, you have to type these commands. Turn the Netcat server on listening mode on any port, e.g.(port 4747), and type the path of the file you want to send.
$ nc -l -p 4747 < path/of/file.ext
On the receiving host, run the following command.
$ nc sending-server.url.com 4747 > path/of/file.ext
Note: The server sending file will use less than sign in the command ‘<’ while the receiving computer will have ‘>’ in the netcat command.
You can also transfer directories. Set the receiving host to listen on a port, e.g. (4747).
$ nc -l -p 4747 | tar -zxfv /path/of/directory
Send it to the receiving host listing on the port.
$ tar czvf – /path/of/directory | nc receiving-hast.url.com 4747
The directory will be transferred. To close the connection, press CTRL+C
Transfer Files Using FTP
FTP (file transfer protocol) is used to transfer files between computers or clients and servers. It is faster than HTTP and other protocols in terms of file transfer because it is specifically designed for this purpose. It allows you to transfer multiple files and directories, and if there is any interruption in the connection during the transfer, the file will not be lost. Instead, it will resume transferring where it got dropped.
You can install an FTP server like vsftpd using apt by running this command.
$ sudo apt install -y vsftpd
After the package has been installed, you have to start the service by typing.
$ sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd
Then you can connect to the FTP server by typing the command FTP and the IP address.
It will ask you the username and password of the FTP server. After you have entered the username and password, you will be connected to your FTP server.
You can list out all the contents of the server by executing this command.
Download via FTP
If you want to download any file from the FTP server, then you can get it by typing the command.
The file will be downloaded. You can also use different wildcards to download multiple files in a directory. For example ;
It will download all the files with the extension “.html” .
You can also set up a local directory for downloaded files from the FTP server by using the lcd command.
ftp> lcd /home/user/directory-name
Upload files via FTP
To upload files on the FTP server, type the following command.
ftp> put path/of/local/file
The file will be uploaded to the FTP server. To upload multiple files, type commands.
It will upload all the files with the extension “.html” .
Downloading files using Python
Python has a module called ‘http.server’, which is used to transfer files, but with it, you can only download files.
If you don’t have the python installed, then type the following command.
$ sudo apt install -y python3
To turn on the python server, use the command.
$ sudo python3 -m http.server 4747 #[port e.g.(4747)]
Now the python server is listening on port 4747.
Go to your web browser and type the IP address and port no. on which the python server is listening.
A page will open containing all the files and directory on the python server. You can go into any directory and download the files.
You can go into any directory and download any file.
SCP, Netcat, FTP, and Python are commonly used methods to transfer files. All of the above methods of transferring files and directories are fast, reliable, and used in modern days. There are a lot of other techniques as well; you can adopt any method you prefer.