Make a Web Based File Hosting and Syncing Service software (like Dropbox) that would enable users to store and share files and folders with others across the Internet using file synchronization. Also, if a user has uploaded a file to your web server, then any changes he makes to his file locally should automatically be synced with the file on the server whenever there is internet connectivity.

Web Based File Hosting and Syncing Service

Web Based File Hosting Software Implementation:

The project is coded in Python Programming Language (v2.7.1). Sockets are used to transfer messages from one system to other. The crux of the project required the sending of files across a network using TCP stream sockets and syncing them on various remote locations.

Website:

On top of the conventional method of syncing files by running the python program, we also offer website support. To create account in ShareU, the client has to first register on the website for an account. A conformation mail is sent to his email id, after which the client can sync his files under a folder placed in his local disk with the server and also download or upload any desired file through the website. Logging in to the website enables a client to upload, download or share any files from any external machine, without running his python program.

Directory Structure:

Each client has a folder named “client”. client.py is the client-side python file that performs file synchronization and sharing (while looping continuously after connecting with the server). The client-side folder which contains all the files to share and sync with the server is “Sync”. It is also placed in the same folder. client.py contains the username of a particular user and that cannot be changed (inherent assumption).

The server has a folder “server” that contains the working file “server2.py” that is used to listen for incoming connections from various clients and fork a process to deal with each process. The folder “/users” has many folders, each being the username of client having all the files of that particular client. The folder “/logs” contains the logs pertaining to each client, named “<username>.txt”. The logs are used to store the paths of files that have been shared with the particular user.

client-server interaction:

The server python script is listening for incoming connections on a predefined port. The server forks another process (for dealing with a client) as soon as any client connection is received and keeps listening for any other connections.

Download Web Based File Hosting and Syncing Service Project Report