Skip to content

simple curl-able uploader for backups that manages versions and supports multiple backup targets

License

Notifications You must be signed in to change notification settings

HaschekSolutions/backupdrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BackupDrop logo

BackupDrop

Apache License HitCount

Selfhosted backup upload target that manages versions encryption retention and supports cloud endpoints


Features

  • Selfhostable
  • Handles backup versions by date, size and count
  • File based - no database needed
  • Supports multiple local and cloud endpoints
  • Supports multiple backup sources (machines you want to back up), distinguished by hostname
  • No dependencies unless you want cloud endpoints

Basics

The idea is that you use BackupDrop to upload your backups, which (after upload) cannot be changed by the device you backed up. Some crypto lockers are actively looking for backup devices like NAS or backup drives and delete or encrypt them too. Using BackupDrop the machine you backed up cannot delete or modify or even access past backups.

Also BackupDrop can handle multiple external storage providers and save the backups on S3, FTP or NFS.

You can and should encrypt files before uploading them (especially if you're using cloud endpoints) but if you can't, BackupDrop can handle it for you using public key or password encryption. Read more

Quick start with docker

# without persistence
docker run --rm --name backupdrop -p 8080:80 -it hascheksolutions/backupdrop

# with persistence
docker run --restart unless-stopped --name backupdrop -v /tmp/:/var/www/backupdrop/data -p 8080:80 -it hascheksolutions/backupdrop

Quick start without docker

Start the server (in a prodction environment you'll want to use a real webserver like nginx)

cd web
php -S 0.0.0.0:8080 index.php

Then upload a file using curl

curl -s -F "file=@webserver.tar.gz" http://localhost:8080/webserver

Response:

{
  "status": "ok",
  "filename": "2021-01-18 00.03.gz",
  "cleanup": []
}

This has created the folder data/webserver (because we uploaded the file to localhost:8080/webserver) and renamed the file to the timestamp and the original extension.

Identical upload detection

If you upload the exact same file twice (detected by comparing their checksums), BackupDrop will delete the older upload and just keep the new one (only within the same backup source hostname)

curl -s -F "file=@webserver.tar.gz" http://localhost:8080/webserver

Result:

{
  "status": "ok",
  "filename": "2021-01-18 00.24.gz",
  "cleanup": [
    "Deleted '2021-01-18 00.03.gz' because it's a duplicate"
  ]
}

Configuration

To change default settings you need to copy or rename /config/example.config.inc.php to /config/config.inc.php and change the values as needed.

Check out the example config file to see what how you can configure BackupDrop.

About

simple curl-able uploader for backups that manages versions and supports multiple backup targets

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published