Linux: Different tools For Network Sharing And How To Use Them

Table of Contents

Related Tutorials

File sharing is an important aspect of utilizing any operating system. You might use a USB drive for local file sharing. However, you may also accomplish this by using remote desktop access, especially if you are on the same network as another PC at work. In this part, we will go over some of the fundamentals of file sharing as well as some tools to do this.

Secure Copy (SCP)

One of the useful tools for file sharing is definitely scp which works almost similar to the cp command. It utilizes the ssh protocol so you need to username and password for accessing the remote machine. Using the scp, you can transfer any file from a local to a remote machine or remote to the local machine, and between two remote machines as well. When used scp to send data, both the files and the password are encrypted to ensure that anyone listening on the network does not obtain anything important.


$ scp file.txt [email protected]:/remote/dir

Here, file.txt is the name of the file you wish to share, and remote_username and are the remote machine’s username and IP address, respectively. Finally, /remote/directory specifies the location of the file in the remote system.

There are a few options that you can pass also. These are listed below:

  • -c: compresses the file 
  • -q: hide the non-error messages and progress bar
  • -r: recursive coping
  • -p: preserves file modification and access time

Before using scp command, you need to know that you must provide the username and password of the remote machine. You also need to have read permission of the source file and write permission of the destination. The colon (:) is used by scp to differentiate between local and remote directories.

To copy from a remote machine to a local machine,

$ scp [email protected]:/remote/file.txt /local/dir

To copy from a remote machine to another remote machine,

$ scp [email protected]:/files/file.txt [email protected]:/files

In this case, you need to provide the username and password of both machines.

Remote Synchronization (rsync)

It is another tool for copying files between local and remote machines, similar to the scp command but with significant differences. Assume you’re transferring a huge file and it is stopped for whatever reason. If you want to copy the file, you must restart the process with scp. However, there is a benefit for you if you use the rsync command. It features a checking algorithm that verifies the file’s size or time to confirm the modifications. Then it just copies the rest of the file. As a result, its checking methodology makes it a quick, versatile, and secure substitute for the command scp

To copy files on the same host,

$ rsync -zvr /local/dir/one /local/dir/two

To copy files from a local host to a remote machine,

$ rsync /local/dir [email protected]:/remote/dir

To copy a file from a remote machine to the local host,

$ rsync [email protected]:/remote/dir /local/dir

There are lots of options that you can pass with rsync which can be found using the command below:

$ rsync --help

Some of the options are given here for your ease.

  • -h: humans readable output
  • -v: verbose output
  • -z: compresses the file
  • -r: recursive copying

HTTP Server using Python

So far, we talked about how we can communicate between servers and how to transfer files from the local host to remote servers, and the other way around. In this section, I will give you a brief overview of how you can set up your own server and share your desired directory with others. For this purpose, python has a great module named http.server which is pretty simple and easy to use. Most of the cases, it comes by default if have installed python 3 it on your system. 
To enable the server, first, choose a directory you want to share with others. For me it is /home/ohid/desktop/server/. Now, go to your terminal from this directory and run the command below.

$ python3 -m http.server

- Linux: Different tools For Network Sharing And How To Use Them

You can see that after enabling http.server, it starts serving itself through port 8000. Now, go to the link from your browser. You can see your directory like this.

W2x6QQbyt7toBAiXnpUq 0X64yXPNqh R7QaYIXpwyTyF2XRI5gpIWjXhp qS8rhdhr3NbKH1 joHiT394ijgLGgVg6lHhbwtRkB - Linux: Different tools For Network Sharing And How To Use Them

This directory now can be accessed through the IP address of other machines. Additionally,  html files like index.html can be added to customize the webpage. A demo index.html file is shown below.

        <title>EnableGeek Tutorials</title>
        <h1>Welcome to EnableGeek tutorials! </h1>
        <p> Visit our home page</p>
        <a href=""/>EnableGeek</a>

In that case, the python interpreter will detect it automatically and serve it to the IP address instead of serving the files. If you enable the python server now, you will see in the browser something like the image below.

Hbv0UKJv5c2l56r AuFWyYJEUGBJXVuTt1jmZtx yyeHKEY8ELtC04bQsS0VxMLe XU146wlmoas50sQOqMfHZVRUwRpKXjMOD9XnruJzfN vV0mYZeV3oa9npNf2rz6NyoPEFnL64OyIEcy078VpcP8qwHVUy3 L3uTjyVMPPDfUYA7NynVLMtkg - Linux: Different tools For Network Sharing And How To Use Them

You can also set a different port if you wish to http.server offer more functionality also for this you may need to write a python script. The http.server is named as SimpleHTTPServer in python 2 and there may be other changes in syntax. 


Another great tool for file sharing is samba which is installed on a linux server but its shared files can be accessed from both linux and windows OS.  Server Message Block (SMB) was originally used to share files across Windows operating systems (Mac also supports SMB file sharing), but it was eventually cleaned up and optimized as the Common Internet File System (CIFS) protocol. Samba is the name given to the Linux tools used to deal with CIFS on Linux. You may share resources such as printers in addition to files.

To begin with, you need to install the samba on your system. You have to run the following command.

$ sudo apt update
$ sudo apt install samba

After that, you need to configure samba as per your needs. The default configuration file is located in /etc/samba/ the directory. To view the default configuration, run the command below.

$ sudo vi /etc/samba/smb.conf

There are lots of commands which are commented out. You may change these if the necessity arises. To verify the configuration, run the command below.

$ sudo testparm

You will see the output as follows:

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Press enter to see a dump of your service definitions

# Global parameters
	log file = /var/log/samba/log.%m
	logging = file
	map to guest = Bad User
	max log size = 1000
	obey pam restrictions = Yes
	pam password change = Yes
	panic action = /usr/share/samba/panic-action %d
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	passwd program = /usr/bin/passwd %u
	server role = standalone server
	server string = %h server (Samba, Ubuntu)
	unix password sync = Yes
	usershare allow guests = Yes
	idmap config * : backend = tdb
	browseable = No
	comment = All Printers
	create mask = 0700
	path = /var/spool/samba
	printable = Yes
	comment = Printer Drivers
	path = /var/lib/samba/printers

Next, you need to select a directory that you want to share and give permissions and ownerships as follows:

$ sudo chmod -R 755 /home/ohid/Desktop/server

Now, set up a user for samba with a username and password which enhance the security. It can be done using the following command.

$ sudo useradd smbuser
$ sudo smbpasswd -a [username]

EgD8g7hZSmsP 4rgjmmgjuLAMRyim9HCWu1yTxQzlwHxYSdTjqQp - Linux: Different tools For Network Sharing And How To Use Them

You need to provide a username in the command. After executing, it will ask for a password. Boom! You have added a samba user. As you have completed all the initial steps, you can now start and enable the samba daemons.

$ sudo systemctl start smbd
$ sudo systemctl enable smbd
$ sudo systemctl start nmbd
$ sudo systemctl enable nmbd

Before using it, ensure that the daemons are running.

$ sudo systemctl status smbd

MY3byTDqizUP5t1ORLBZTQYyRfw07qd0qSWthKEi 2DeZY5K0oC WH59MjpZMCU1iSCBsFGIgq034vQ vJqhaoU8MwwVH6rxB B4LVk9nGvWMa8upgVd3Jf7Fv4qKEW7kuZLU7sNliyyHloVv8tgkm6dZyv 6IhvRVIcRlJ6LpVcAhbWfspO3VzPnQ - Linux: Different tools For Network Sharing And How To Use Them

The result shows that samba daemons are active and operating. There is also another software called sambaclient that you may install. Run the following command to install it.

$ sudo apt install smbclient

After that, you can check the samba server IP.

$ sudo findsmb

Fe28jCqGgOD f3wkF4qkHem99QfPTRSzuB1XbCpBfdr7sBpCw MRIGLZpRzNl7jHrKDhhokMATiH9svB rjtd0lfl uBqOBKtKvTA334fAFjBaNqdYeinXUjdQGAdNO88qeci4aHD pDYf58wnk1SAOlSVwwS74N5GoQmsDhrd7JoA6b9jpTg2Uc - Linux: Different tools For Network Sharing And How To Use Them

The IP address may be found here. You may now connect to the server from a Windows PC. To do so, navigate to the network area and add the network as shown below.


The ‘share’ is the name that you want to add. After that, you may access the shared directory and carry out your desired tasks.

Share The Tutorial With Your Friends