GithubHelp home page GithubHelp logo

yoshtec / krummstiel Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 70 KB

krummstiel is an apple ios backup script targeted at automating backup of multiple devices

License: MIT License

Python 99.77% Shell 0.23%
ios backup ios-backups

krummstiel's Introduction

Krummstiel

Krummstiel is a small Python script automating regular backup apple ios device. The idea is to incrementally save pictures to your server/desktop. It is in use on Linux, but could be run on macOS as well with the proper tools installed.

Features

Implemented:

  • Automatically mount and copy Files to Backup path via rsync for configured and connected devices.
  • Configuration of backup path
  • Configure excluded paths globally or per Device
  • Help in connecting new devices
  • Silently ignore disconnected devices

Planned Features:

  • Notify user of the backup start and finished on the device
  • Delete old photos and videos from the device after backup. Should understand not to delete Favourites or specified albums. For that the Photos.sqlite database has to be read and understood. My efforts to understand the database are found in photossqlite.md File.
  • Backup application data

Get Started

  1. Install required tools and libraries:
    Linux (Ubuntu 20.4):
    apt install libimobiledevice-utils ifuse rsync 
    macOS:
    brew install --cask osxfuse
    brew install libimobiledevice ifuse 
  2. Install krummstiel via
    pip install krummstiel
  3. Create a target directory that will contain the backups e.g. via mkdir /mnt/data/iphone_backups
  4. Create your config file from example.ini
  5. Discover connected devices via
    krummstiel --discover --config "/path/to/myconfig.ini"
  6. run the script via:
    krummstiel --config "/path/to/myconfig.ini" --verbose

Config

Configuration is done via .ini File and is passed via --config or -c parameter.

[DEFAULT]

# path fo the backup, the name of the device will always be appended
backup_path = /mnt/data/iphone_backups

# excludes can be an json array or a single value see example of iphone1
# format is for rsync --exclude syntax
exclude = Podcasts

# Section naming will be used for identifying the ios device
# Section is the uid of the ios device
[1234567890abcdef1234567890abcdef12345678]
# name is used to create the folder and copy files
name = my_iphone
# exclude can be repeated and is overriding exclude of the DEFAULT section
# json array
exclude = ["Podcasts", "Books"]

Automating with UDEV (Linux only)

Udev allows you to run scripts when devices are plugged in.

Examples:

Automating with cron

Krummstiel can just run regularly with as a cronjob. Running it with your user ensures that you have access to the files backed up.

*/5 *    * * *   your_user_id    path/to/krummstiel --config "path/to/config.ini" >> /path/to/backup.log

Name

The name of the program was chosen to be an Apple that is under threat. One would assume that apples are ubiquitous and are in status "least concern", while this is true for many apples (especially for commercially used and still distributed apples) there are many apple types that are endangered.

The Rheinischer Krummstiel is an old apple variant which is on the "Red list of endangered domestic plants" of the German "Federal Office for Agriculture and Food". It can roughly be translated to "crooked stalk", which I found a good analogy for attaching the Apple device to an usb cable.

There are more apples, that are under threat. Visit the IUCN Threatened Species list for a full list of all species.

License

Krummstiel uses the MIT License.

krummstiel's People

Contributors

yoshtec avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.