| Crates.io | arq-restore |
| lib.rs | arq-restore |
| version | 0.2.0 |
| created_at | 2026-01-08 13:44:22.203532+00 |
| updated_at | 2026-01-09 14:18:58.29365+00 |
| description | A program to restore backups created with Arq 6 and 7 |
| homepage | |
| repository | https://codeberg.org/tisba/arq-restore |
| max_upload_size | |
| id | 2030248 |
| size | 1,732,776 |
A program to restore Arq 6 and 7 compatible backups.
I am using Arq 7 for remote backup of some important files on my Mac for many years now. The software works quite well for me, but there aren't as many updates recently as there used to be in the past. Since the data format is documented and I wanted to look into Rust, I created this project to learn the language and to also have an insurance plan in case the company behind Arq goes bust.
cargo install arq-restore
The basics do work, but there are various sharp edges. Be careful if you consider relying on this!
You can currently only restore backups that are in the local file system. S3-compatible storage locations planned (maybe more with opendal). In the meantime, you can use rclone serve to mount your remote storage location as an NFS volume.
The code is not at all optimized for performance, but in my testing I was able to get close to restore speed of about 75 MB/sec, which I would consider "good enough" for now.
arq-restore calls the storage location "repository".Usage is definitely subject to change. Check out arq-restore --help.
All operations require to provide the encryption password for the backup. It can be provided in three ways:
--password: directly provide (not recommended)
--password-file: read password from file, whitespace will be truncated
--password-command: run command and use output as password, whitespace will be truncated
You can use this to get a password from the macOS keychain:
arq-restore --password-command="security find-generic-password -w -s 'my-arq-backup'" […]
List backup folders
arq-restore -PASSWORD- list --repository=arq/backup/D7E09473-74BF-4E6D-86C3-43A033570D80
List backup records for given backup folder
arq-restore -PASSWORD- list --repository=arq/backup/D7E09473-74BF-4E6D-86C3-43A033570D80 --folder=DD994AEF-F9CB-4D39-B12D-1EF5305103C8
List all directories and files for this backup record and folder
arq-restore -PASSWORD- list --repository=arq/backup/D7E09473-74BF-4E6D-86C3-43A033570D80 --folder=DD994AEF-F9CB-4D39-B12D-1EF5305103C8 --record=1763107319
…which can be limited to a specific subfolder
arq-restore -PASSWORD- list --repository=arq/backup/D7E09473-74BF-4E6D-86C3-43A033570D80 --folder=DD994AEF-F9CB-4D39-B12D-1EF5305103C8 --record=1763107319 --subtree=/path/somewhere/into/the/backup/
arq-restore -PASSWORD- restore --repository=arq/backup/D7E09473-74BF-4E6D-86C3-43A033570D80 --record=1763107319 --folder=DD994AEF-F9CB-4D39-B12D-1EF5305103C8 tmp/restore/path/
arq-resore -PASSWORD- inspect [--raw] FILE
inspect can be used to decrypt (and parse, depending on the detected file type) various metadata files. This is mostly a debugging tool for the arq-restore development itself.
arq-restore does not need to support implementing so many storage backends; also useful for a slow or unstable uplink--exclude to exclude file name patterns from being restoredpanic! and unwraps 🫣panic! for internal checks