Skip to content

simple restfully dockerized distributed open source cloud backup server ;-)

License

Notifications You must be signed in to change notification settings

SegFaulty/RestInCloud

Repository files navigation

simple restfully dockerized distributed open source cloud backup server ;-)

Install Server

to install the ric-server check deployment dir for different enviroments (docker, apache, nginx)

Client for CLI

if your ric-servers are running, you can use the smart "ric" cli tool to backup etc. and manage the cluster

Client-README

Help

Api Overview

Show Help

GET /
GET /?help

File:

PUT  /filename              # backup/upload a file
POST /filename              # refresh file if exists
GET  /filename              # restore/download a file
GET  /filename?check        # check exists, replicas, freshness, size of the file
GET  /filename?list         # list all versions of the file
DELETE /filename            # delete a selected or all version of the file

Server Management

GET  /?list                 # list all files on this server
GET  /?info                 # show server info
GET  /?health               # show cluster health

POST /?addServer            # add a remote server to server (internal for cluster management)
POST /?removeServer         # remove a server from connected server (internal for cluster management)
POST /?joinCluster          # add the server to existing cluster 
POST /?leaveCluster         # leave a cluster
POST /?removeFromCluster    # drop a other server out of cluster
POST /filename push=>server # push file to server

Api Details

admin Commands: Post: with parameters: [action: addServer, addServer: s1.cs.io:3723]

  • addServer s1.cs.io:3723 - add Server to local list,
  • removeServer s1.cs.io:3723 - remove Server from local list
  • removeServer all - remove all Servers from local list
  • joinCluster s2.cs.io - join to existing cluster (or join a single node and create a cluster)
  • leaveCluster - leave a cluster (send removeServer=self to all cluster nodes an clear my servers list)
  • removeFromCluster s3.cs.io - kick a server from the servers list of all known nodes (use this if the server is unresponsive and you can't send a leaveCluster)

auth (only as parameter supported yet)

  • use &token=YourAdminToken to authenticate as admin or writer or reader (e.g. for info command)

serverVersion

  • use &minServerVersion=1.4.0 to require a minimal ServerVersion - it also acts reverse - if the client major version not matches the server major version - the request is rejected - to protect old clients from doing mad things

Usecases

Backup a Dir

dir to back up: /home/www/configs/ server identification: myServer encryption password: fooSecret ricServer: ric1.server.de ricWriterToke: barSecret

store the passwords

echo "fooSecret" > /home/www/ricPassFile.txt
chmod 600 /home/www/ricPassFile.txt
echo "barSecret" > /home/www/ricWriterFile.txt
chmod 600 /home/www/ricPassFile.txt

cronjobs (with sic monitoring)

*/5 * * * * /usr/local/sbin/ric backup /home/www/configs/ myServer-configs.tar.bz2 --retention=last7 --passFile=/home/www/ricPassFile.txt --prefix=myServer- --authFile=/home/www/ricWriterFile.txt --server=ric1.server.de 2>&1 >/dev/null | /usr/local/sbin/sic /myServer/ric-backup --STDINasCRITICAL
*/2 * * * * /usr/local/sbin/ric check myServer-configs.tar.bz2 --prefix=myServer- --authFile=/home/www/ricWriterFile.txt --server=ric1.server.de --minTimestamp=-300  2>&1 >/dev/null | /usr/local/sbin/sic /myServer/ric-backup/check --STDINasCRITICAL

Server Manifest

  • no daemon type, only react on request, no long running requests
  • all response is json, except download and errors
  • the base is a normal filesystem, files in a hashed directory, with original filenames extended by it's sha1 (referenced as "version")
  • no other persistent storage for attributes no database
  • it's seen as critical, if a file has no replicas

License

The MIT License (MIT)

About

simple restfully dockerized distributed open source cloud backup server ;-)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages