File Management

Multiple Ways to Transfer Files Between Your Computer and Cloud Linux Server

There are multiple methods you can use to transfer files between your machine and Linux server, some of which we’ll discuss in this article.

  • 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 usrename@linux-server-IP:/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 (username@remote-server-IP: path/of/remote/file.ext).

After running this command, it will require the password of the Linux server user account

$ username@remote-server’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 username@linux-server-ip:/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 username@linux-server-ip: path/of/file.ext

-r flag is used to copy the folder and all of its content.

$ scp -r /path/of/your/local/folder username@linux-server-ip: /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 username@linux-server-ip: 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 username@linux-server-ip: 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 username@linux-server-ip: /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.

$ ftp [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.

ftp> ls

Download via FTP

If you want to download any file from the FTP server, then you can get it by typing the command.

ftp> get  path/of/file

The file will be downloaded. You can also use different wildcards to download multiple files in a directory. For example ;

ftp> mget  *.html

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.

ftp> mput  *.html

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.

http://IP_Address:4747/

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.

Conclusion

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.

About the author

Usama Azad

Usama Azad

A security enthusiast who loves Terminal and Open Source. My area of expertise is Python, Linux (Debian), Bash, Penetration testing, and Firewalls. I’m born and raised in Wazirabad, Pakistan and currently doing Undergraduation from National University of Science and Technology (NUST). On Twitter i go by @UsamaAzad14