In this project you are going to create a cloud-based file storage service called SurfStore. SurfStore is a networked file storage application that supports four basic commands:
Create a file
Read the contents of a file
Change the contents of a file
Delete a file
Multiple clients can concurrently connect to the SurfStore service to access a common, shared set of files. Clients accessing SurfStore “see” a consistent set of updates to files, but SurfStore does not offer any guarantees about operations across files, meaning that it does not support multi-file transactions (such as atomic move).
$ mvn protobuf:compile protobuf:compile-custom
$ mvn package
$ target/surfstore/bin/runBlockServer $ target/surfstore/bin/runMetadataStore
$ target/surfstore/bin/runClient
$ mvn clean