What is on the drive¶
The backup folder: Deucalion-Backup¶
Deucalion-Backup/
├── backup.json which computer and user this is, the last backup and its result
├── home/ your home folder, as normal files
├── system/ the system recipe (readable text files; see system/README.txt)
├── extras/<name>/ extra folders you added (for example extras/shared)
├── _removed/<date>/ Removed Files: old versions and deleted files, one folder per backup
└── .deucalion/ Deucalion's own records (hidden)
├── drive-id the backup's identity (id, name, how names are stored)
├── manifest.sqlite the manifest: original names, permissions, links, checksums
├── manifest.sqlite.bak a copy, saved after every completed backup
├── logs/ one log per backup, restore and rebuild
├── lock prevents two Deucalion tasks on the drive at once
└── staging/ files being copied (only during a backup)
The demo backup, on the drive:
$ ls -a "/media/alex/Alex Backup/Deucalion-Backup" "/media/alex/Alex Backup/Deucalion-Backup/.deucalion"
'/media/alex/Alex Backup/Deucalion-Backup':
. .. .deucalion _removed backup.json home system
'/media/alex/Alex Backup/Deucalion-Backup/.deucalion':
. .. drive-id lock logs manifest.sqlite manifest.sqlite.bak
Don't change these by hand
Don't rename or move Deucalion-Backup, and don't change anything in .deucalion. To free space,
empty Removed Files with Deucalion. You can open and copy any file at any time.
backup.json¶
A summary that any program (or person) can read:
$ cat "/media/alex/Alex Backup/Deucalion-Backup/backup.json"
{
"tool": "Deucalion",
"tool_version": "0.2.0",
"format": 1,
"machine": {
"hostname": "alex-laptop",
"os": "Ubuntu 24.04.5 LTS",
"version_id": "24.04",
"kernel": "6.8.0-142-generic"
},
"user": {
"name": "alex",
"uid": 1000,
"home": "/home/alex"
},
"sources": [
{
"name": "home",
"origin": "/home/alex"
},
{
"name": "system",
"origin": "/home/alex/.local/state/deucalion/system"
}
],
"last_run": {
"kind": "full",
"started": "2026-10-12T09:10:17+01:00",
"finished": "2026-10-12T09:10:17+01:00",
"status": "completed",
"copied_files": 5,
"copied_bytes": 2478520,
"removed_items": 1,
"warnings": 0,
"error": null
},
"last_full_backup": "2026-10-12T09:10:17+01:00"
}
| Key | Meaning |
|---|---|
tool, tool_version, format |
Written by Deucalion, which version, and the format version (1). |
machine |
The computer's name, Ubuntu version and kernel at the last backup. |
user |
The user name, user id and home folder. |
sources |
What the backup contains (home, system, extras/…) and where each came from. |
last_run |
The last backup: full or partial, start and end, result, what it copied and moved, warnings, error. |
last_full_backup |
When the last full backup finished successfully. |
.deucalion/drive-id¶
A small JSON file that makes the folder a backup: a unique id (how Deucalion recognises the drive,
wherever it is mounted), its name, when and by which version it was created, and name_policy:
exfat (names made exFAT-safe) or posix (names kept as they are, on
Linux filesystems).
On the normal part: Deucalion-Tool and READ-ME-FIRST.txt¶
Drives that Deucalion prepares (except a whole-drive encrypted one) also get, on their unencrypted part (for the encrypted-folder layout: next to the encrypted file):
$ ls "/media/alex/Alex Backup1" "/media/alex/Alex Backup1/Deucalion-Tool"
'/media/alex/Alex Backup1':
Deucalion-Tool READ-ME-FIRST.txt
'/media/alex/Alex Backup1/Deucalion-Tool':
README.md bin deucalion drive.json
READ-ME-FIRST.txt: what is on the drive and how to open the backup on Linux, macOS and Windows, written for the drive's layout. See an example in Encrypted part + normal part.Deucalion-Tool/: a copy of Deucalion (bin/,deucalion/,README.md) that runs on any Ubuntu withbin/deucalion, anddrive.json.
Both are refreshed after every backup. If a file or folder with one of these names that Deucalion
didn't create is already there, it is never replaced: Deucalion uses READ-ME-FIRST (Deucalion).txt or
Deucalion-Tool (Deucalion) instead.
Deucalion-Tool/drive.json¶
How to open the encrypted backup, so that deucalion open on a new computer can find it without
being told:
$ cat "/media/alex/Alex Backup1/Deucalion-Tool/drive.json"
{
"method": "veracrypt",
"kind": "partition",
"partuuid": "357b958c-3642-4038-828f-af744ee22801",
"mount_name": "Alex Backup",
"plain_uuid": "EFFC-B52F",
"version": "0.2.0",
"target_id": "f7721c0e-a587-44de-a199-2d74f9c20b4e",
"target_name": "Alex Backup"
}
| Key | Meaning |
|---|---|
method |
veracrypt, luks or none. |
kind |
partition (encrypted part or whole drive) or file (encrypted folder). |
partuuid |
The encrypted partition's id (kind partition). |
file, plain_path |
The encrypted file's name and where the drive was mounted (kind file). |
plain_uuid |
The id of the normal part (where this file is). |
mount_name |
The name the unlocked backup is mounted under. |
version, target_id, target_name |
Deucalion's version, and the backup's id and name. |
The password is never stored anywhere.
The encrypted folder file¶
The encrypted-folder layout stores the whole backup in one file: Deucalion-Backup.hc (VeraCrypt) or
Deucalion-Backup.luks (LUKS). Its size is fixed when it is created.
How the drive is partitioned¶
| Layout | Partitions |
|---|---|
| Whole drive | One partition (marked as a Linux partition), encrypted; inside: exFAT (VeraCrypt) or ext4 (LUKS2). |
| Encrypted part + normal part | A normal exFAT partition first, then the encrypted partition (Linux type) at the end of the drive. |
| Plain exFAT | One exFAT partition (8 KB clusters). |
| Encrypted folder, as it is | Unchanged. |
All drives Deucalion partitions use a GPT partition table. exFAT is created with 8 KB clusters.