A GUI to browse and restore restic backup repositories.

Overview

drawing drawing


A simple, cross-platform restic backup GUI for browsing and restoring restic repositories.

Built with Wails2, based on leaanthony's Restoric PoC.

Download

Prebuilt binaries can be downloaded from the GitHub releases page.

Features

  • Displays contents (snapshots, files) from local and remote restic repositories.
  • Restores selected files or folders (as a zip archive) to a desired location.
  • Opens selected files by moving them to TEMP, then opens them with your operating system's default programs.

This is not a fullblown restic backup GUI - it only allows you to browse existing repositories!

Screenshot

Keyboard Navigation

The UI is navigatable via keyboard shortcuts. To change the focus area, hit Tab + Shift-Tab keys.

Global Shortcuts:

  • Control/CMD + O: Open new repository

Snapshot-List

  • Arrow keys, Page Up/Down, Home/End: Change selected snapshot

File-List

  • Arrow keys, Page Up/Down, Home/End: Change selected file
  • o or Enter or Space: Open selected file or folder
  • R: Restore selected file or folder

System Requirements

All platforms

  • Install restic and make sure it is included in your $PATH.

Windows:

  • Windows 10 or later with WebView2 Runtime

MacOS:

  • macOS 10.14 or later

Linux:

  • Linux with GLIBC_2.31 or later (e.g. Ubuntu 20.04 or later)
  • WebKit2 (install via apt install libwebkit2gtk-4.0 on Ubuntu)

Development

Dependencies

Front-end and App Development

To work in live development mode with automatic hot-reloading, run wails dev in the root directory.

Go Backend Debugging

To debug the Wails Go application code, you can use the included startup tasks of vscode. If you press "F5" in vscode, the application will be built in debug mode and then started.

Building Production Packages

To build a redistributable package in production mode, use wails build -tags production,desktop or use the default build task in vscode.

License

MIT license. See LICENSE for the full text.

Contribute

Patches are welcome! Please fork the latest git repository and create a feature branch.

Comments
  • An option (even default) for restores to extract files directly including directory structure rather than download a zip file

    An option (even default) for restores to extract files directly including directory structure rather than download a zip file

    Hi @emuell

    I had a need to restore from a backup recently. Restic-browser to the rescue. :)

    But I noticed that the restore function in restic-browser drops a zip file, rather than extracting the files directly. On windows, zip files might be useful, but in a Linux environment, it is less than desirable, as I was unsure of filesystem metadata being restored properly, such as ownerships and file permissions from with the zip file. And having the intermediary zip file was also largely unnecessary for my use case. So ultimately, I resorted to the restic command line tool to do my restore.

    Would you consider changing the defaults for Restic from dumping out a zip during restore to restoring the files directly?

    Many thanks.

    Damo.

    help wanted 
    opened by damoclark 6
  • "failed to restore file: unknown shorthand flag 'a' in -a"

    Hi! Thank you for putting together this terrific tool. It's easy to install, and robust browsing a large restic archive. I'm running Restic-Browser-v0.2.2-beta-linux, on a restic archive on Backblaze B2.

    I've browsed to a directory five levels deep, backed up three years ago, and now I'm attempting to either 'view' (eye icon) or 'download' (down to disk icon) a file in that folder.

    On clicking either of those icons, a red toast pops up, with the text "Failed to restore file: unknown shorthand flag 'a' in -a".

    On attempting to download a file, a zero-byte file with the name of the desired file is created locally.

    Is there a flag I can start the binary with, to enable logging?

    opened by benklaasen 5
  • Small improvements

    Small improvements

    Thanks for the effort. I just run it to see how it works and have few small suggestions:

    • Panic in gui apps, generally no-go. If the restic is not in path, exiting a bit gracefully would be better. Sorry if this issue was specific to my env.
    • There is a small typo while opening repository: "respository"
    • Looks like it doesn't auto-catch the existing environment variables. This could be a nice option.
    opened by seqizz 4
  • Ubuntu 20.04 LTS GLIBC_2.34 GLIBC_2.32 not found

    Ubuntu 20.04 LTS GLIBC_2.34 GLIBC_2.32 not found

    Hi @emuell

    This looks like an exciting project. Thanks for sharing your work.

    Just reporting that when I try to run Restic-Browser on Ubuntu 20.04.4 (amd64), I get the error:

    $ ./Restic-Browser
    ./Restic-Browser: /lib/x86_64-linux/gnu/libc.so.6: version 'GLIBC_2.34' not found (required by ./Restic-Browser)
    ./Restic-Browser: /lib/x86_64-linux/gnu/libc.so.6: version 'GLIBC_2.32' not found (required by ./Restic-Browser)
    

    The version of libc.so.6 on my install is symlinked to libc-2.31.so. 😞

    I suspect this will be related to wails2, so not sure how you might overcome this one. But 20.04 is a very common install base, and is supported by Canonical for another 3 years.

    Damo.

    opened by damoclark 4
  • Bump vite from 2.9.12 to 2.9.13 in /frontend

    Bump vite from 2.9.12 to 2.9.13 in /frontend

    Bumps vite from 2.9.12 to 2.9.13.

    Changelog

    Sourced from vite's changelog.

    2.9.13 (2022-06-27)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Caching

    Caching

    Something else to consider is for restic-browser to cache results when you explore the backup directory tree structure to view files. At the moment, if you return to directories you have visited already (even going back up to parent directory), the reload of the files is just as slow as the first. The delay is not trivial - at least for me and I'm working with a restic repo that is on a local disk.

    It might need to be an option to enable or not, as some users may not want to cache the file listings and directory structure on disk where they are using your tool, for security/privacy reasons. They would have to endure the lag when navigating to different directories.

    I do love that switching between snapshots keeps the directory view on the same directory. This is great when you need to restore a file from a particular directory, but not sure which snapshot to pull it from. Very nice! This is something that backintime does. It is a great GUI backup/restore tool to take some inspiration from.

    Damo.

    enhancement 
    opened by damoclark 1
  • Feature/password files

    Feature/password files

    • Read default location passwords from RESTIC_PASSWORD_FILE when set
    • Allow prefilling/reading passwords in the location dialog from a password file (see https://github.com/emuell/restic-browser/issues/13)
    opened by emuell 0
  • Feature/restic version checks

    Feature/restic version checks

    Show a proper error message when folder dumps are not possible because the installed restic program version is too old (see https://github.com/emuell/restic-browser/issues/22)

    opened by emuell 0
  • Feature/set repo from env

    Feature/set repo from env

    • set initial repository from the env's RESTIC_REPOSITORY and RESTIC_PASSWORD values, when they are set
    • do not modify repo location when hitting "Cancel" in the Location chooser dialog
    opened by emuell 0
  • Allow sorting snapshots and files by time or name

    Allow sorting snapshots and files by time or name

    It should be possible to sort the snapshot and file lists by either time or name (which is the default). The vaadin grid easily allows doing so, so this should be easy to realize in the Restic Browser as well.

    enhancement 
    opened by emuell 0
  • Allow connecting to rclone locations

    Allow connecting to rclone locations

    It should be possible to use "rclone" connections: Can be implemented by adding a new "rclone" type to the "Open Repository" dialog. Doesn't need any other credentials.

    enhancement 
    opened by emuell 0
  • [Request] Allow To Save/Store Repo Credentials

    [Request] Allow To Save/Store Repo Credentials

    I'm not sure if this has been brought up before, but I'd love to not have to input my repo details every time I wanna view snapshots= contents.

    Would there be a way to cache/save/store this info anywhere, and just have the repo kind of saved onto the client? If that's out of scope, then perhaps read from a file for all inputs, not just password?

    I personally use Backblaze, so it's a lot of copy pasting every time.

    Thanks!

    Edit: Ideally you'd allow credentials to be saved for all types of repositories (local, S3, Backblaze), and allow for multiple repos to be saved too.

    opened by SakiSakiSakiSakiSaki 0
  • Issue with $PATH on OSX

    Issue with $PATH on OSX

    Thanks for this tool. I'm having an issue that I don't know how to solve (sorry if this is a basic question).

    I have both restic and rclone (for the repository) in my $PATH, but when I run restic-browser it does not detect restic and asks me to manually set the path to the executable. Then, when I do that, and try to browse my rclone repository, I get an error saying rclone is not in the $PATH.

    How do I fix this? I'm running MacOS Ventura btw and using zsh ($PATH is defined in the ~/.zshrc file).

    opened by darthlite 15
  • Allow searching for files or folders in the selected snapshot

    Allow searching for files or folders in the selected snapshot

    Hi @emuell

    Last idea/suggestion. :)

    Search functionality would be really useful for restic-browser. Initially perhaps on the path and tags, although date/time ranges could be used too. With the introduction of #29 you could use that same text box with search syntax.

    Just sharing these ideas after using restic-browser for a little while now. But they are only suggestions. I fully recognise that you are likely sharing your work in case it is useful for someone else, just scratching an itch, or having some fun hacking some code. In other words, I have no expectations, and simply appreciate an opportunity to provide feedback that may help make a good idea even better.

    In any case, thank-you Eduard for sharing your work. :)

    Damo.

    enhancement 
    opened by damoclark 2
  • Add tab competition when changing root paths in file list

    Add tab competition when changing root paths in file list

    When navigating with restic-browser, you traverse the paths of the backup by clicking through the UI on each directory at a time. Yet, when you know exactly where you need to go, or at least a pretty good idea at the start, this makes it slow and cumbersome. This is especially true because restic-browser needs to query the repo for each directory listing along the path.

    To mitigate this issue, restic-browser could include a type of url bar, or a text box in which the path can be typed, thus allowing direct navigation to a known location in the backup. For example, if you needed to restore a file located in /usr/local/bin, instead of clicking on each of those directories, and waiting for the next listing to load, you would just type: /usr/local/bin and enter.

    As an extension of this suggestion, restic-browser could also include tab-completion functionality for this text entry box, so when you get to a path depth, where you are no longer confident about the next directory, you can double-tab and have restic-browser look up the deepest level typed so far, and then return a drop down list (or some other UI element) so you can choose just the next level. Think just how UNIX shells work with tab completion.

    With the inclusion of these two features, you can be far more productive in navigating around a backup using restic-browser.

    Again, just a suggestion for consideration.

    Damien.

    enhancement 
    opened by damoclark 2
  • Possible redesign for navigation of snapshots and paths

    Possible redesign for navigation of snapshots and paths

    If it is given, that restic-browser is focused entirely on restoration functions, then adding features that leverage the visual interface (as compared to restic command line) to make restoring easier should perhaps be prioritised.

    At present, restic-browser is mimicking some of the command-line features of restic. When restic-browser could truly augment the command line tools is to make it even easier to locate the files you need to restore. To do this, I suggest a fundamental change to how restic-browser currently traverse a repository.

    The current model of operation for restic-browser is that you select a snapshot, and then you navigate the directory structure of that snapshot to locate files.

    This is great when you know which snapshot you need to restore from (e.g. the latest snapshot). But there will be times when you need to restore a known path, but its unclear from whence (which snapshot).

    I am just highlighting that there are two dimensions to locating the files you wish to restore. When they were backed up (snapshot & tags), and where they are located (path), but restic-browser only currently supports navigating by one.

    Instead, I would suggest that you can also navigate directory structures and files first, and in response, restic-browser then filters down the matching snapshots. Or more ideally, restic-browser should support mutating both inputs without resetting the other. You change either the snapshot, or the path, and the other input remains the same, thus helping you to triangulate on both dimensions to locate the files/directory to restore.

    Just a suggestion for consideration. :)

    D.

    opened by damoclark 0
Releases(v0.2.5)
Owner
Eduard Müller / taktik
Eduard Müller / taktik
Given an object and a property, replaces a property descriptor (or deletes it), and returns a thunk to restore it.

Given an object and a property, replaces a property descriptor (or deletes it), and returns a thunk to restore it.

Jordan Harband 7 Apr 20, 2022
A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux and Web

简体中文 | English Koodo Reader A cross-platform ebook reader Download | Preview | Roadmap | Document Preview Feature Format support: EPUB (.epub) Scanned

Troye Guo 8.6k Dec 29, 2022
Custom endpoint to backup the PG database and upload the `.dump` to Directus.

Directus Backup Endpoint Custom Directus endpoint to backup Postgres database using pg_dump and upload the .dump file into Directus files. Usage Clone

Guilherme Oliveira 7 Dec 21, 2022
Custom operation to backup the PG database and upload the .dump to Directus.

Directus Backup Operation Custom Directus operation to backup Postgres database using pg_dump and upload the .dump file into Directus storage. Prerequ

Guilherme Oliveira 7 Dec 21, 2022
Backup of faker.js source code.

This is mirrored project from faker.js. This is created because it seemed to have been hacked. faker.js - generate massive amounts of fake data in the

dohyeon lee 2 Jan 8, 2022
It is automatic mongodb data backup with cronjob.

Do you need my help? Visit our Discord server. Installation npm i mongoose-backup --save yarn add mongoose-backup Guide const MongoBackuper = require(

Void Development 3 Aug 8, 2022
Browse a list of your favorite movies and tv shows on the Steam-It Movie Database.

Preview Desktop view Stream-It The website allows users to browse a list of movies, like a movie, view and add comments to a movie Built With HTML and

Ben Kiarie 10 Sep 30, 2022
Country finder: A site that allows you to browse the countries of the world with all the necessary information about the country

Country finder: A site that allows you to browse the countries of the world with all the necessary information about the country

Medjahdi Islem 12 Nov 18, 2022
Browse local files using the non-standard Web Browser File System Access API

Browse local files using the non-standard Web Browser File System Access API

Jeremy Tuloup 16 Oct 26, 2022
[Experimental] Browse local files using the non-standard File System Access API

jupyterlab-filesystem-access Browse local files using the non-standard Web Browser File System Access API. ⚠️ This extension is compatible with Chromi

Jeremy Tuloup 0 Apr 14, 2022
[Experimental] Browse local files using the non-standard File System Access API

jupyterlab-filesystem-access Browse local files using the non-standard Web Browser File System Access API. ⚠️ This extension is compatible with Chromi

JupyterLab Unofficial Extensions & Tools 12 Apr 15, 2022
example app that creates a new player in Spotify Connect to play music from in the browse using Spotify Web Playback SDK.

Spotify Web Playback SDK Demo Requirements User must have Spotify Premium, DRM & EME supported and JavaScript enabled Web Browser. License Copyright 2

Sijey 8 Jul 20, 2022
An Obsidian plugin that lets you browse the web within Obsidian.

Obsidian Web Browser An Obsidian plugin that allows you to browse the web within Obsidian using v1.0 tabs. The core functionality of the plugin, rende

Dion Tryban 102 Dec 28, 2022
An app to manage tasks. A user can add, delete and edit a task and mark it as completed, It uses simple GUI and relies on DOM manipulation in pure JS and using local storage.

An app to manage tasks. A user can add, delete and edit a task and mark it as completed, It uses simple GUI and relies on DOM manipulation in pure JS and using local storage.

KHITER Mohamed Achraf 6 Aug 20, 2022
Search your code and 2M+ public repositories on Sourcegraph directly within Raycast.

Sourcegraph for Raycast Search your code and 2M+ public repositories on Sourcegraph directly within Raycast. Install · Setup · Commands · Issues · Cha

Robert Lin 5 Jul 10, 2022
Node js package makes creating node jd dependincies files like Controllers,Entities and Repositories easier by executing a few instructions

Nodejs Studio Node js package makes creating node js project dependincies files like Controllers,Entities and Repositories easier by executing a few i

Syrian Open Source 9 Oct 12, 2022
Make your repositories and READMEs more beautiful!

Dynamic Image Renderer API easy to use - open source Make your repositories and READMEs more beautiful! This API generate an image dynamically with yo

Thiago 12 Nov 19, 2022
GitHub action to automate managing repositories with labels, milestones and projects.

triagecat GitHub action to automate managing repositories with labels, milestones and projects. Link issues and PRs labels. Add issues and PRs to a pr

Oliver Wilkes 6 Jun 14, 2022
Tool for GitHub/GitLab to keep Repositories/Projects you are interested in and their Pull/Merge Requests in desktop Tray Menu

Tool for GitHub/GitLab to keep Repositories/Projects you are interested in and their Pull/Merge Requests in desktop Tray Menu. More info in User Guide.

Oleksii Bilyk 5 Jul 31, 2022