This tool backs up one or few local Roam Research graphs. You can run it periodically using cron etc. to perform regular backups of your graph.
Since it's a version 0.1, it assumes that you are using Google Chrome on Mac OS. It should be fairly trivial to make it more generic, but I have neither desire nor ability to test it in multiple configurations, although patches are welcome.
- Download roam_backup.py and place it somewhere by navigating to the desired folder and executing the following
command:
curl -O https://raw.githubusercontent.com/vkryukov/roam-backup/master/roam_backup.py
- Install Selenium Chrome driver with
brew cask install chromedriver
- Install
selenium
python package withpip3 install selenium --user
- Run
python3 roam_backup.py -h
to see the help message.
usage: roam_backup.py [-h] [--debug] [--timeout TIMEOUT] [--json] local_graph backup_dir
Backup local Roam database.
positional arguments:
local_graph name of the local graph
backup_dir folder to place backup files
optional arguments:
-h, --help show this help message and exit
--debug show the browser and pause after each step
--timeout TIMEOUT max timeout for each action
--json export JSON file
To schedule backups on macOS, you can use a launchd.plist generator. E.g.
if you put the script in /Users/vkryukov
, and want to backup a local database test
into
/Users/vkryukov/roam-backups
every 15 minutes, you should populate the following fields:
- Name:
Roam offline backup
- Command:
/usr/local/bin/python3 /Users/vkryukov/roam_backup.py test /Users/vkryukov/roam-backup
- Minute:
*/15
Leave all the other fields blank.
Important. After the file is created, you will need to also specify the working directory. By default,
the working directory is /
, and unless you change it, chromedriver
won't be able to download any files.
You can set it to your home directory or /tmp
. It's also convenient to setup stderr
and stdout
logs, e.g.:
<key>StandardOutPath</key>
<string>/Users/vkryukov/launchd.stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/vkryukov/launchd.stderr.log</string>
<key>WorkingDirectory</key>
<string>/Users/vkryukov</string>
You can modify the example to suit your needs.