{"id":20652466,"url":"https://github.com/thesofakillers/distributed-file-server","last_synced_at":"2026-04-18T18:35:15.624Z","repository":{"id":70961823,"uuid":"163249110","full_name":"thesofakillers/Distributed-File-Server","owner":"thesofakillers","description":null,"archived":false,"fork":false,"pushed_at":"2019-02-11T23:29:52.000Z","size":1119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-09T02:40:46.800Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thesofakillers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-27T05:00:47.000Z","updated_at":"2019-02-11T23:29:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"33c7e3bb-44fd-4a6c-8462-e1fef00b4939","html_url":"https://github.com/thesofakillers/Distributed-File-Server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thesofakillers/Distributed-File-Server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesofakillers%2FDistributed-File-Server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesofakillers%2FDistributed-File-Server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesofakillers%2FDistributed-File-Server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesofakillers%2FDistributed-File-Server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thesofakillers","download_url":"https://codeload.github.com/thesofakillers/Distributed-File-Server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesofakillers%2FDistributed-File-Server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31980275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T17:35:06.033Z","updated_at":"2026-04-18T18:35:15.595Z","avatar_url":"https://github.com/thesofakillers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Distributed File-Server System\n\nOriginally made for Durham University's Department of Computer Science's course _Networks and Systems_ under the sub-module _Distributed Systems_, as part of the coursework in 2017/2018.\n\nThis repository contains an implementation of a distributed file server system written in Python\n\nThis assignment is a follow-up to [this other assignment](https://github.com/thesofakillers/ClientServer-FTP) from the same module.\n\nPlease ensure [Pyro4](https://pythonhosted.org/Pyro4/) is installed.\n\n## Repository Structure\n\n```bash\n├── local\n│   ├── client.py\n│   └── Resources\n│       ├── LargeFile.mp4\n│       ├── MediumFile.pdf\n│       └── SmallFile.txt\n├── middle\n│   └── frontend.py\n├── README.md\n└── remote\n    ├── server1\n    │   ├── Resources\n    │   └── server1.py\n    ├── server2\n    │   ├── Resources\n    │   └── server2.py\n    └── server3\n        ├── Resources\n        └── server3.py\n```\n\nThe repository consists in five [Python 3.6](https://www.python.org/downloads/release/python-360/) scripts: `client.py`, `frontend.py`, `server1.py`, `server2.py`, `server3.py`. The 3 servers are copies of the same script placed in different directories to simulate running on different machines (actually running them on different machines can be achieved aswell.)\n\nFiles stored in Client and Servers are placed in respective \"Resources\" Folder.\n\n## Instructions\n\nRun each script in separate terminal (servers can be sent to background).\nThe general process is:\n\t1. Run `frontend.py`\n\t2. Run at least one of 3 server scripts. (steps 1\u00262: arbitrary order)\n\t3. Run `client.py`. Provides user with instructions along the way.\n\n-   System handles 2 server crashes (i.e. only 1 server running).\n-   Frontend running for system to be operational.\n\nTo run a script on a different machine from `frontend.py`, simply determine the machine's IP address and replace \"localhost\" with the IP address in respective constants across the scripts.\n\nExample: run server3.py on different machine:\n\t1. Move \"server3\" directory to different machine\n\t2. Determine machine IP address.\n\t3. In `server3.py` and `frontend.py`, change constant `server3_address` from \"localhost\" to the ip address you determined (string).\n\t4. Proceed with general process defined above\n\nDesigned in Ubuntu. Tested on Windows/Linux Python3.6.\n\n## In the Future\nI realize that having 3 copies of the same script is very silly. In principle, I would change this so that there is a single script whose instances can be run from different terminals. This would be relatively simple to implement. Perhaps even utilizing git!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesofakillers%2Fdistributed-file-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthesofakillers%2Fdistributed-file-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesofakillers%2Fdistributed-file-server/lists"}