All Projects β†’ yegor256 β†’ Threecopies

yegor256 / Threecopies

Licence: mit
Hosted Server Backup Service

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Threecopies

Edizon
πŸ’‘ A homebrew save management, editing tool and memory trainer for Horizon (Nintendo Switch)
Stars: ✭ 706 (+2177.42%)
Mutual labels:  backup
Mongodb Backup Cli
mongodb-backup cli for Nodejs
Stars: ✭ 17 (-45.16%)
Mutual labels:  backup
Flickrsync
A command line tool to synchronise, upload, download, pictures between the local file system and Flickr. Image hash signature of the picture is used to uniquely identify the image.
Stars: ✭ 14 (-54.84%)
Mutual labels:  backup
Shallow Backup
Git-integrated backup tool for macOS and Linux devs.
Stars: ✭ 720 (+2222.58%)
Mutual labels:  backup
Unyson
A WordPress framework that facilitates the development of WP themes
Stars: ✭ 890 (+2770.97%)
Mutual labels:  backup
Borgmatic
Simple, configuration-driven backup software for servers and workstations
Stars: ✭ 902 (+2809.68%)
Mutual labels:  backup
Percona Xtrabackup
Open source hot backup tool for InnoDB and XtraDB databases
Stars: ✭ 678 (+2087.1%)
Mutual labels:  backup
Ansible Restic
Deploy restic backup program
Stars: ✭ 29 (-6.45%)
Mutual labels:  backup
Phpmyadmin sql backup
A Python script to automate SQL dumps via phpMyAdmin's web interface
Stars: ✭ 17 (-45.16%)
Mutual labels:  backup
Bash Toolkit
Este proyecto esΓ‘ destinado a ayudar a los sysadmin
Stars: ✭ 13 (-58.06%)
Mutual labels:  backup
Pgbackrest
Reliable PostgreSQL Backup & Restore
Stars: ✭ 766 (+2370.97%)
Mutual labels:  backup
Safeharbor
local mirror of your Github stars (including ALL branches)
Stars: ✭ 16 (-48.39%)
Mutual labels:  backup
Tumblthree
A Tumblr Blog Backup Application
Stars: ✭ 923 (+2877.42%)
Mutual labels:  backup
Duplicati
Store securely encrypted backups in the cloud!
Stars: ✭ 6,915 (+22206.45%)
Mutual labels:  backup
Govno
Backup your govno to S3! VNO protocol implementation in Go
Stars: ✭ 21 (-32.26%)
Mutual labels:  backup
Rdedup
Data deduplication engine, supporting optional compression and public key encryption.
Stars: ✭ 690 (+2125.81%)
Mutual labels:  backup
Sia Slice
Maintain disk images or other large files indefinitely on the Sia network.
Stars: ✭ 18 (-41.94%)
Mutual labels:  backup
Netflix Ratings Extractor
Greasemonkey script for Chrome, Firefox, Safari: export your rated Netflix movies.
Stars: ✭ 30 (-3.23%)
Mutual labels:  backup
Quip Export
Export all folders and documents from Quip
Stars: ✭ 28 (-9.68%)
Mutual labels:  backup
Drivebackupv2
Uploads Minecraft backups to Google Drive/OneDrive or by (S)FTP
Stars: ✭ 26 (-16.13%)
Mutual labels:  backup
ThreeCopies logo

Managed by Zerocracy DevOps By Rultor.com

Availability at SixNines

Build Status PDD status Test Coverage

What does it do?

ThreeCopies.com is a hosted service that regularly archives your server-side resources. We create three copies: hourly, daily and weekly.

What's interesting is that the entire product is will be written in EO, a truly object-orented programming language.

The logo is made by Freepik from flaticon.com, licensed by CC 3.0 BY.

How to configure

Each script is a bash scenario, which you design yourself. ThreeCopies just starts it regularly and records its output. These are some recommendations on how to design the script. There are three parts: input, package, and output. First, you collect some data from your data sources (input). Then, you compress and encrypt the data (package). Finally, you store the package somewhere (output).

We start your script inside yegor256/threecopies Docker container, here is the Dockerfile.

If you don't want your script to be executed too frequently, you may put this code in front of it (to skip hourly executions, for example):

if [ "${period}" == "hour" ]; then exit 0; fi

1. Input

To retrieve the data from a MySQL database use mysqldump:

mysqldump --lock-tables=false --host=www.example.com \
  --user=username --password=password \
  --databases dbname > mysql.sql

Since this would require to open your mysql port to the internet, which is not advisable from a security perspective, you should probably use a ssh tunnel:

cat > file.key <<EOT
-----BEGIN RSA PRIVATE KEY-----
<your ssh private key here>
-----END RSA PRIVATE KEY-----
EOT
chmod 700 file.key
ssh -Nf -i file.key -L3306:localhost:3306 [email protected]
rm file.key

and then connect with the above script:

mysqldump --lock-tables=false --host=localhost ...same as above

To download an entire FTP directory use wget:

wget --mirror --tries=5 --quiet --output-file=/dev/null \
  --ftp-user=username --ftp-password=password \
  ftp://ftp.example.com/some-directory

2. Package

To package a directory use tar:

tgz="${period}-$(date "+%Y-%m-%d-%H-%M").tgz"
tar czf "${tgz}" some-directory

We recommend to use exactly that name of your .tgz archives. The ${period} environment variable is provided by our server to your Docker container, it will either be set to hour, day, or week.

3. Output

To upload a file to Amazon S3, using s3cmd:

echo "[default]" > ~/.s3cfg
echo "access_key=AKIAICJKH*****CVLAFA" >> ~/.s3cfg
echo "secret_key=yQv3g3ao654Ns**********H1xQSfZlTkseA0haG" >> ~/.s3cfg
s3cmd --no-progress put "${tgz}" "s3://backup.example.com/${tgz}"

DynamoDB Schema

The tc-scripts table contains all registered scripts:

fields:
  login/H: GitHub login of the owner
  name/R: Unique name of the script
  bash: Bash script
  hour: Epoch-sec when its recent hourly log was scheduled
  day: Epoch-sec when its recent daily log was scheduled
  week: Epoch-sec when its recent weekly log was scheduled

The tc-logs table contains all recent logs:

fields:
  group/H: Concatenated GitHub login and script name, e.g. "yegor256/test"
  finish/R: Epoch-msec of the script finish (or MAX_LONG if still running)
  login: GitHub login of the owner
  period: Either "hour", "day", or "week"
  ocket: S3 object name for the log
  ttl: Epoch-sec when the record has to be deleted (by DynamoDB)
  start: Epoch-msec time of the start
  container: Docker container name
  exit: Bash exit code (error if not zero)
mine (index):
  login/H
  finish/R

How to contribute?

Just submit a pull request. Make sure mvn -Pqulice install passes.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].