Commit 153e3e7c authored by SHIVAM DIXIT's avatar SHIVAM DIXIT

Updated readme

parent 0bd1506d
TEAM NAME - COT
PROJECT NAME - FSync
Roll No. Name git username Contribution
193050012 Shivam Dixit @shivamdixit sync algo, networking between client and server
203050060 Nilesh Tanwar @parsec client gui
......@@ -8,9 +9,18 @@ Roll No. Name git username Contribution
203050109 Ankit Kumar @ankitkumar client gui
203050057 Sandeep Gupta @deeep database
///////////////////////////////////////////////////////////////////////////////////////////////////////////
git link : https://git.cse.iitb.ac.in/shivamdixit/CS699_FSync
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Getting the code :
cd into directory where you want to store the code.
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git
Building and running server :
Go to 'Server' directory.
Go to 'source/Server' directory.
run : chmod 777 build.sh
run : ./build.sh
This will create 'Server.jar' and 'RunServer.sh' files.
......@@ -29,7 +39,7 @@ Building and running server :
Building and running client :
Go to 'Client' directory.
Go to 'source/Client' directory.
run : chmod 777 build.sh
run : ./build.sh
This will create 'Client.jar' and 'RunClient.sh' files.
......@@ -46,6 +56,22 @@ Building and running client :
Example :
./RunClient.sh dir/config.txt
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Introduction :
FSync is an easy to use tool to sync files between multiple machines efficiently. It is especially useful for syncing large files which only have small differences between them. It syncs two files by first calculating in what parts the files are different and in what parts they are same. Then it sends only the parts where the files differ over the network to sync the files. So the data transferred over the network
is proportional to differences in the files rather than the size of the file.
So if you have a set of files that you want to be replicated between multiple machines and want any change made to these files to be reflected on all the other machines then FSync is a very handy tool for that.
You can either sync up (upload local files to the server and other machines) or sync down download files from the server to the local machine. Other than these manual sync functions you can also turn on the auto sync feature which will sync up the files to the server and other machines after every N seconds (application will ask the value of N when turning on auto sync).
Motivation :
In this day and age such situations are fairly common where a single user works on a single project from multiple machines and any work done from any one machine needs to be reflected in other machines. This calls for a mechanism to sync the files on multiple machines.
One straightforward way to do it is to upload the complete contents of one machine to all other machines. While this syncs the files between machines and works, it is not the optimal way to do it or even impractical in cases where files to be synced are very large and small changes are frequent. The optimal way to do it is to only send the parts of the files which have changed between the machines to minimize the data transferred over the network. This is exactly what we tried to do with our file syncing application.
We also felt the need to provide a way to automatically sync the files after a given time interval. A use case for this is as follows. Suppose a server is running and appending the logs to a log file (log file is growing with time) and a developer wants to analyse the log file every day by downloading it his/her own computer. In this case he/she can setup the FSync application between server and his/her own computer and set the server side FSync to auto sync every 24 hours. So every day the log file will be synced to local machine and will be ready for analysis.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
References:
https://rsync.samba.org/
......
Getting the code :
cd into directory where you want to store the code.
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git
Building and running client :
Go to 'source/Client' directory.
run : chmod 777 build.sh
run : ./build.sh
This will create 'Client.jar' and 'RunClient.sh' files.
Client needs a config file. A sample config file is given, you can edit it according to your setup.
Client config file has three fields :
SERVER_ADDR:<server ip address>
SERVER_PORT:<server port>
OPERATION_DIR:<working directory for client>
Trailing '/' in OPERATION_DIR is must.
For example : OPERATION_DIR:/path/to/dir is wrong.
OPERATION_DIR:/path/to/dir/ is right.
To run the client:
./RunClient.sh <configFilePath>
Example :
./RunClient.sh dir/config.txt
Getting the code :
cd into directory where you want to store the code.
run : git clone https://shivamdixit@git.cse.iitb.ac.in/shivamdixit/CS699_FSync.git
Building and running server :
Go to 'source/Server' directory.
run : chmod 777 build.sh
run : ./build.sh
This will create 'Server.jar' and 'RunServer.sh' files.
Server needs a config file. A sample config file is given, you can edit it according to your setup.
Server config file has two fields :
PORT:<port number>
OPERATION_DIR:<working directory for server>
Trailing '/' in OPERATION_DIR is must.
For example : OPERATION_DIR:/path/to/dir is wrong.
OPERATION_DIR:/path/to/dir/ is right.
To run the server:
./RunServer.sh <configFilePath>
Example :
./RunServer.sh dir/config.txt
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment