All Projects → rickh94 → airtable_local_backup

rickh94 / airtable_local_backup

Licence: MIT license
Create local backups of airtable databases

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to airtable local backup

mmd-gitlab-backuper
a package to backup from all projects that you have on gitlab
Stars: ✭ 27 (-15.62%)
Mutual labels:  backup
PronoteLib
Java library to get data from a PRONOTE (Index-Education) server.
Stars: ✭ 16 (-50%)
Mutual labels:  rest-client
docker-db-backup
Backup mutltiple databases types on a scheduled basis with many customizable options
Stars: ✭ 302 (+843.75%)
Mutual labels:  backup
awesome-storage
A curated list of storage open source tools. Backups, redundancy, sharing, distribution, encryption, etc.
Stars: ✭ 324 (+912.5%)
Mutual labels:  backup
google-backup
Drive/Gmail/Calendar backups
Stars: ✭ 31 (-3.12%)
Mutual labels:  backup
downstagram
Command line tool to download and backup all your Instagram photos
Stars: ✭ 32 (+0%)
Mutual labels:  backup
stenc
SCSI Tape Encryption Manager - stenc (formerly on https://sourceforge.net/projects/stenc/)
Stars: ✭ 41 (+28.13%)
Mutual labels:  backup
airtable
Airtable API Client for Go
Stars: ✭ 25 (-21.87%)
Mutual labels:  airtable
BaNG
Backup Next Generation for Linux & Mac using rsync (support hardlinks and btrfs snapshots), Web-Frontend, Statistics, History-Merger)
Stars: ✭ 28 (-12.5%)
Mutual labels:  backup
RoboBackup
Windows service for orchestrating file backups via robocopy utility.
Stars: ✭ 35 (+9.38%)
Mutual labels:  backup
pockexport
Export/access your Pocket data, including highlights!
Stars: ✭ 124 (+287.5%)
Mutual labels:  backup
dotfiles
My dotfiles and some scripts to bootstrap new workstations
Stars: ✭ 27 (-15.62%)
Mutual labels:  backup
btrfs-backup
A simple, flexible script for versioned backups using btrfs and rsync
Stars: ✭ 59 (+84.38%)
Mutual labels:  backup
backup-docker
A simple command line tool to backup and restore docker containers along with their volumes
Stars: ✭ 58 (+81.25%)
Mutual labels:  backup
kirby-backup-widget
Kirby panel widget to easily backup your site content.
Stars: ✭ 25 (-21.87%)
Mutual labels:  backup
Zaloha2.sh
Small and simple directory synchronizer (a BASH script)
Stars: ✭ 50 (+56.25%)
Mutual labels:  backup
NClient
💫 NClient is an automatic type-safe .Net HTTP client that allows you to call web service API methods using annotated interfaces or controllers without boilerplate code.
Stars: ✭ 25 (-21.87%)
Mutual labels:  rest-client
infrastructure
This repo contains all information about machine maintenance.
Stars: ✭ 75 (+134.38%)
Mutual labels:  backup
httpyac
Command Line Interface for *.http and *.rest files. Connect with http, gRPC, WebSocket and MQTT
Stars: ✭ 103 (+221.88%)
Mutual labels:  rest-client
linux-android-backup
Back up your device without vendor lock-ins, using insecure software or root. Supports encryption and compression out of the box. Works cross-platform.
Stars: ✭ 119 (+271.88%)
Mutual labels:  backup

Airtable Local Backup - IN PROGRESS

https://travis-ci.org/rickh94/airtable_local_backup.svg?branch=master https://codebeat.co/badges/875ffd7a-5a0f-4ca2-89d2-a8e7037fff80

The goal of this project is to provide an easy way to backup data from Airtable without too much user intervention. (The current recommended solution is download individual csv files and attachments and correlate them manually. yuck.)

Goals

With a simple yaml configuration file and this library, it should be possible to download all table data (including attachments) and restore them to a new airtable database.

A cli frontend is also possible once the library/api is complete.

Internals

Airtable does not offer an quick offline backup solution, but they do offer and decent REST API so that is what is used to download the table data. Listing tables is not supported so they will need to be specified in a config (yaml) file. Attachment files are downloaded, their data compressed (optional), and base64 encoded and stored with their filename and a hash fo the original data. The whole table is then serialized to json and dumped to a file. incomplete

The json can be read and uploaded to a new database by the restore functions. Airtable requires a public endpoint for files so temporary storage is required. Currently s3 buckets are supported (NOTE: the bucket need not and should not be public. A presigned url will be generated for airtable to download the file.) I hope to also support digitalocean spaces. If no backing store is provided, attachment data will be discarded (though still available in the backup).

Once json files are created for each table, they will be combined to a zipfile or tar archive for storage. (If this is not desired, scripts can be written to access other parts of the api.)

TODO

  • Finish core API: mainly files. Download and upload are mostly working.
  • Implement configuration file for database schema.
  • Help restore database schema in some way, possbily blank-ish csvs with data type guesses based on downloaded data.

Long-Term Goals

  • Linked Records: Record linking will be tricky because restored bases will have different unique ids assigned to the records. It will require something like creating the whole database and then doing a second pass to create the links based on searches. Will probably be pretty hack-y.
  • Data migration: Because the data is being serialzed to json, it shouldn't be too hard to go from that to loading it into another document database (tinydb, mongodb, dynamodb, etc.) or maybe even a SQL database (not sure.)

Contributing

If you are interested in using this, feel free to open an issue or a PR or grab something off the todo and hack on it a little, or write a test for existing code that isn't covered (please use pytest).

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].