Skip to content
Håvard Gulldahl edited this page Sep 27, 2015 · 8 revisions

Developer documentation

Details of all command line tools

jottafuse

TBD

How to set up

Remember to get this package:

pip install jottalib[FUSE]

How it works

TBD

jottacloudclientscanner

A cli friendly sync client for JottaCloud.

It will sync your directory tree with JottaCloud, just like the official client does.

Run jotta-scanner at some interval:

python jotta-scanner <top dir of your local tree> <the mount point on jottacloud>

The top dir is just an existing directory on your system that you want to backup.

The mount point is a path on JottaCloud. It's put together from a combination of an existing device name, an existing backupdir and a folder name (that will be created if it doesn't exist). Like this: /<devicename>/<backupdir>/<foldername>

Example:

python jotta-scanner /mnt/pictures /mybox/backup/pictures

How to set up

Remember to get this package:

pip install jottalib[scanner]

How it works

The basic operation on the JottaCloud servers is to make file level backups. Unlike data-level protocols like rsync, the JottaCloud protocol does not seem to support delta encoding, so file syncing needs to happen by copying the full file content.

To determine if a file needs to be updated, Jotta Cloud Client will compare the md5 hash of the local file with the one that the JottaCloud server reports. If the hashes differ, the client will upload the file. This is akin to how the official JottaCloud client works.

Fine-tuning to your needs

There are several ways where you can adapt this tool to your setup. Let's look at how.

Local checksum cache
On supported file systems, the program will store the calculated md5 checksum, so that next time we don't have to calculate it again.
--no-checksum This will skip checksums altogether, and only compare file modification time & file size with the backed up file. This will save a lot of time calculating the checksum, but comes at a price: We can't be certain to catch all cases where the file is modified, so the file might not be backed up properly.

jottacludclientmonitor

TBD

How to set up

Remember to get this package:

pip install jottalib[monitor]

How it works

TBD

The Jottalib API

A lot of words to describe spirit and method, and a link to the docs

QT models

The project aims to supply a fully-functional QStandardItemModel for easy pyqt4 programming.

Take a look at jottalib.qt, where you'll find a JFSModel(QtGui.QStandardItemModel) class and various JFSNode(QtGui.QStandardItem) classes to match the jottacloud api. Using these classes you'll hopefully be able to focus on the UI/UX and leave the plumbing to jottalib.

Note! By default, the pyqt is an optional dependency. You have to install it explicitly:

pip install jottalib[Qt]

The Jottacloud protocol explained

TBD

But it's not finished!

But it's not very advanced!

Geez, you should've added super bright idea already!

Want to help out? Great! You have several options to get started.

  1. Look for low hanging fruit in the reported issues.
  2. As about in the dev channel to figure out where to begin
  3. Flesh out details on what you miss in a new bug report
  4. Fork the code and add the features you miss. Then, submit a pull request and smile! You're contributing to the world!