<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>东东's Blog</title><link href="https://blog.yasking.org/en/" rel="alternate"></link><link href="https://blog.yasking.org/atom.xml" rel="self"></link><id>https://blog.yasking.org/en/</id><updated>2025-04-03T21:00:00+08:00</updated><entry><title>Backing Up Important Data with Restic</title><link href="https://blog.yasking.org/en/a/obsidian-encrypt-backup-with-restic" rel="alternate"></link><published>2025-04-03T21:00:00+08:00</published><updated>2025-04-03T21:00:00+08:00</updated><author><name>Yieldone</name></author><id>tag:blog.yasking.org,2025-04-03:/en/a/obsidian-encrypt-backup-with-restic</id><summary type="html">&lt;p&gt;I had been using Cryptomator for quite a long time to manage my content. Its advantage is that local data also requires a password to access. After encryption, the content can be placed on sync drives like Nutstore, Dropbox, etc., and uploaded to the cloud in real-time after each file …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I had been using Cryptomator for quite a long time to manage my content. Its advantage is that local data also requires a password to access. After encryption, the content can be placed on sync drives like Nutstore, Dropbox, etc., and uploaded to the cloud in real-time after each file addition or modification.&lt;/p&gt;
&lt;p&gt;If you're storing content that doesn't need editing and you mainly add or replace resources, I would still highly recommend trying Cryptomator. It's well-suited for saving electronic scans, images, and spreadsheet documents.&lt;/p&gt;
&lt;p&gt;However, on macOS, if you use software like Obsidian to manage your knowledge base and frequently need to edit content, editing text files after decrypting with Cryptomator becomes quite unfriendly. To avoid issues, when editing plain text files, I had to copy them out, edit them, and then replace the original files, which was quite cumbersome.&lt;/p&gt;
&lt;p&gt;I happened to learn about &lt;a href="https://github.com/restic/restic"&gt;Restic&lt;/a&gt;. If you want to encrypt and backup your Obsidian or other note-taking software vaults and upload them to cloud drives or S3-compatible platforms, then Restic is perfect for that.&lt;/p&gt;
&lt;h3&gt;Quick Start&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Installing Restic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;macOS&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It supports mainstream operating systems. For details, see: &lt;a href="https://restic.readthedocs.io/en/latest/020_installation.html"&gt;https://restic.readthedocs.io/en/latest/020_installation.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Initializing a Local Repository&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simply put, a repository is a folder for storing encrypted files. The initialization process generates some metadata.&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; for&lt;/span&gt;&lt;span style="color:#2AA198"&gt; new&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; again:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;created&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 0a40262533&lt;/span&gt;&lt;span style="color:#2AA198"&gt; at&lt;/span&gt;&lt;span style="color:#2AA198"&gt; /Users/xxxxx/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;Please&lt;/span&gt;&lt;span style="color:#2AA198"&gt; note&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; knowledge&lt;/span&gt;&lt;span style="color:#2AA198"&gt; of&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;span style="color:#2AA198"&gt; required&lt;/span&gt;&lt;span style="color:#2AA198"&gt; to&lt;/span&gt;&lt;span style="color:#2AA198"&gt; access&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;the&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository.&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Losing&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; means&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; data&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;irrecoverably&lt;/span&gt;&lt;span style="color:#2AA198"&gt; lost.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Remember your password. Once forgotten, there's no way to decrypt the data.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/01.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Backing Up Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Execute the command to back up the &lt;em&gt;~/Documents/Note&lt;/em&gt; folder to the &lt;em&gt;~/Documents/NoteE2EE&lt;/em&gt; repository.&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On the first run, you can see the number of files and directories backed up, and the "snapshot" ID is displayed.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/02.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;The command can be run multiple times (each run creates a snapshot).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/03.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;Since it creates incremental backups, you don't need to worry about snapshots taking up too much space.&lt;/p&gt;
&lt;p&gt;Use the following command to view the list of snapshots in the repository:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This repository folder "NoteE2EE" contains encrypted content. Following the 3-2-1 principle, it can be safely stored on local hard drives, external drives, and cloud storage without worrying about data leaks.&lt;/p&gt;
&lt;h3&gt;Optimizing Backup Command Parameters&lt;/h3&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --pack-size&lt;/span&gt;&lt;span style="color:#D33682"&gt; 32&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --exclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.tmp"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --iexclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.LOG"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --limit-upload&lt;/span&gt;&lt;span style="color:#D33682"&gt; 1024&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good use of the &lt;code&gt;--pack-size&lt;/code&gt; parameter can effectively control the number of target files, preventing large files from being split into too many small files. Historical files won't be affected; it only impacts the current incremental backup.&lt;/p&gt;
&lt;p&gt;Corresponding to &lt;code&gt;--limit-upload&lt;/code&gt;, there's a &lt;code&gt;--limit-download&lt;/code&gt; parameter for limiting download speed.&lt;/p&gt;
&lt;p&gt;If you're developing small tools based on Restic, the &lt;code&gt;--json&lt;/code&gt; parameter is quite necessary:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;29&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;204482794&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0.2808864315308279&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;13&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;93753349&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;1&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"summary"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;8&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"tree_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;756&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added_packed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;608&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_duration"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;5.552792709&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_start"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:04.949151+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_end"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:10.501995+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"snapshot_id"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"74e465ed71f7fb5b7abb562d4cb9d067f20d89a1a9f3ed4ed32a0bc73e8abab1"&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Based on this data, you can create progress bars and display the volume of backed-up files.&lt;/p&gt;
&lt;h3&gt;More Backend Storage Types&lt;/h3&gt;
&lt;p&gt;Using the command &lt;code&gt;restic init --repo ~/Documents/NoteE2EE&lt;/code&gt;, we created a local repository.&lt;/p&gt;
&lt;p&gt;Below is an example of an S3-compatible storage:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Setting environment variables&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_ACCESS_KEY_ID=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_ACCESS_KEY_I&lt;/span&gt;&lt;span style="color:#657B83"&gt;D&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_SECRET_ACCESS_KEY=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_SECRET_ACCESS_KE&lt;/span&gt;&lt;span style="color:#657B83"&gt;Y&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_DEFAULT_REGION=cn-east-1&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Initializing repository and backup&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --verbose&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note: If the &lt;code&gt;AWS_DEFAULT_REGION&lt;/code&gt; environment variable is not set, &lt;em&gt;us-east-1&lt;/em&gt; will be used as the default value.&lt;/p&gt;
&lt;p&gt;For other platforms and storage options like Amazon S3, Backblaze B2, Google Cloud, etc., refer to the documentation: &lt;a href="https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html"&gt;https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Snapshot Management&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Keeping Recent Snapshots&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We might run &lt;code&gt;backup&lt;/code&gt; on a schedule, but too many backups can be overwhelming. Run the following command to keep only the 7 most recent snapshots:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#657B83"&gt; [repository &lt;/span&gt;&lt;span style="color:#2AA198"&gt;path]&lt;/span&gt;&lt;span style="color:#2AA198"&gt; forget&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --keep-last&lt;/span&gt;&lt;span style="color:#D33682"&gt; 7&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --prune&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Snapshot Tags&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can specify multiple tags when backing up (&lt;em&gt;--tag "v1.0" --tag "daily"&lt;/em&gt;):&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --tag&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "v1.0"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can also modify tags for existing snapshots:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Add a tag&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --add&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 8c5c9d50&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Remove a tag&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --remove&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#D33682"&gt; 43547193&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Set multiple tags&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --set&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important,project2"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; a1ff1a78&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It's worth noting that after each modification, the snapshot ID will change.&lt;/p&gt;
&lt;h3&gt;Verifying Backup Integrity&lt;/h3&gt;
&lt;p&gt;Backups stored in the cloud can't guarantee 100% file preservation or prevent damage. You can verify integrity using the check command:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="04.jpg" src="https://images.yasking.org/technology/1743676450/04.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Now let's simulate "damage". For example, find a file in the data directory within the NoteE2EE directory, modify its filename by adding an underscore at the beginning to simulate file damage/loss.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/05.jpg" width="42.00%" /&gt;&lt;/p&gt;
&lt;p&gt;Running the check command again shows that the repository is abnormal and needs repair, which is expected.&lt;/p&gt;
&lt;p&gt;&lt;img alt="06.jpg" src="https://images.yasking.org/technology/1743676450/06.jpg"&gt;&lt;/p&gt;
&lt;h3&gt;Restoring Snapshots to a Specific Directory&lt;/h3&gt;
&lt;p&gt;View existing snapshots:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Export a specific snapshot:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;5fcd966f is the snapshot ID, which can be found using the snapshots command; additionally, the NoteRestore directory will be created automatically if it doesn't exist.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If your repository is large and you only want to export certain files or directories, use the following command:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --include&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Epub电子书&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;In this case, "--include Epub电子书" refers to a folder in the root directory of the repository.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Using "copy" Instead of "backup"&lt;/h3&gt;
&lt;p&gt;If you only have one encrypted repository, using backup each time works fine. However, if you follow the 3-2-1 principle for backups and have multiple encrypted repositories, running backup multiple times to different repositories is inefficient.&lt;/p&gt;
&lt;p&gt;In this case, you need to use &lt;code&gt;copy&lt;/code&gt;, which ensures strict data consistency and performs well:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;span style="color:#2AA198"&gt; copy&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --from-repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;From an AI summary (which I think is quite good):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you need to synchronize data between multiple Restic repositories, &lt;code&gt;copy&lt;/code&gt; is always the preferred choice—it acts like a professional "data mover" between repositories, while &lt;code&gt;backup&lt;/code&gt; is like a "collector" for original data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Give Restic Browser a Try&lt;/h3&gt;
&lt;p&gt;If you're not a fan of command-line operations, you can try this open-source tool: &lt;a href="https://github.com/emuell/restic-browser"&gt;emuell/restic-browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="07.jpg" src="https://images.yasking.org/technology/1743676450/07.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Developed with Rust + TypeScript, it's only a few megabytes in size and has read-only functionality. As the name "Browser" suggests, it allows you to browse encrypted repositories and makes it more convenient to look for files in snapshots.&lt;/p&gt;
&lt;h3&gt;You Might Also Need Autorestic&lt;/h3&gt;
&lt;p&gt;Documentation: &lt;a href="https://autorestic.vercel.app/"&gt;Autorestic&lt;/a&gt; &lt;a href="https://autorestic.vercel.app/quick"&gt;Quick Start&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Autorestic is a wrapper around the amazing &lt;a href="https://restic.net/"&gt;restic&lt;/a&gt;. While being amazing the restic cli can be a bit overwhelming and difficult to manage if you have many different location that you want to backup to multiple locations. This utility is aimed at making this easier 🙂&lt;/p&gt;
&lt;p&gt;Autorestic is a wrapper developed around the excellent restic tool. Although the restic command-line tool itself is outstanding, when you need to synchronize backup data from multiple different locations to multiple storage targets, its operation can seem complex and difficult to manage. This tool aims to simplify this process, making multi-target backup management easier and more convenient.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Configuration File&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a configuration file with the following content:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;version&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;backends&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_primary&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_backup&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE-copy"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;locations&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  notes&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    from&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/Note"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    to&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_primary&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_backup&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    options&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      forget&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;        keep-last&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Change the configuration file permissions (recommended):&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; chmod&lt;/span&gt;&lt;span style="color:#D33682"&gt; 600&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/.autorestic.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Locations and Backends&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In Autorestic, Location describes the backup content and target (from / to), and Backend defines the backup destination.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Configuration Verification&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/08.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything is fine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Manual Backup Execution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Complete backup:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Specific Location backup:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -l&lt;/span&gt;&lt;span style="color:#2AA198"&gt; notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Output:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/09.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;Currently, this solution perfectly fits my needs and is easy to use. I'll update this post with any additional information after using it for a while.&lt;/p&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://restic.readthedocs.io/en/stable/"&gt;Restic Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://autorestic.vercel.app/quick"&gt;Autorestic Quick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Technology"></category><category term="Software"></category></entry><entry><title>Sauvegarder des données importantes avec Restic</title><link href="https://blog.yasking.org/fr/a/obsidian-encrypt-backup-with-restic" rel="alternate"></link><published>2025-04-03T21:00:00+08:00</published><updated>2025-04-03T21:00:00+08:00</updated><author><name>Yieldone</name></author><id>tag:blog.yasking.org,2025-04-03:/fr/a/obsidian-encrypt-backup-with-restic</id><summary type="html">&lt;p&gt;J'ai utilisé Cryptomator pendant assez longtemps pour gérer mes contenus. Son avantage est que les données locales nécessitent également un mot de passe pour y accéder. Une fois chiffrées, ces données peuvent être synchronisées vers Nutstore, Dropbox ou d'autres services cloud, avec un téléversement en temps réel après chaque modification …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai utilisé Cryptomator pendant assez longtemps pour gérer mes contenus. Son avantage est que les données locales nécessitent également un mot de passe pour y accéder. Une fois chiffrées, ces données peuvent être synchronisées vers Nutstore, Dropbox ou d'autres services cloud, avec un téléversement en temps réel après chaque modification.&lt;/p&gt;
&lt;p&gt;Si vous stockez des fichiers qui ne nécessitent pas d'édition fréquente et que vous ajoutez ou remplacez principalement des ressources, je recommande vivement Cryptomator. Il est idéal pour sauvegarder des documents numérisés, des images et des tableaux.&lt;/p&gt;
&lt;p&gt;Cependant, sous macOS, si vous utilisez des logiciels comme Obsidian pour gérer votre base de connaissances et que vous modifiez fréquemment vos fichiers, l'édition de texte avec Cryptomator devient peu pratique. Pour éviter les problèmes, je devais copier le contenu, le modifier, puis remplacer le fichier original, ce qui était assez fastidieux.&lt;/p&gt;
&lt;p&gt;J'ai découvert par hasard &lt;a href="https://github.com/restic/restic"&gt;Restic&lt;/a&gt;. Si vous souhaitez sauvegarder et chiffrer votre coffre-fort Obsidian pour l'envoyer vers un cloud ou une plateforme S3, Restic est parfaitement adapté.&lt;/p&gt;
&lt;h3&gt;Quick Start&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Installation de Restic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;macOS&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Compatible avec la plupart des systèmes d'exploitation, voir : &lt;a href="https://restic.readthedocs.io/en/latest/020_installation.html"&gt;https://restic.readthedocs.io/en/latest/020_installation.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Initialisation d'un dépôt local&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un dépôt est simplement un dossier qui stocke vos fichiers chiffrés. L'initialisation crée des métadonnées nécessaires.&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; for&lt;/span&gt;&lt;span style="color:#2AA198"&gt; new&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; again:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;created&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 0a40262533&lt;/span&gt;&lt;span style="color:#2AA198"&gt; at&lt;/span&gt;&lt;span style="color:#2AA198"&gt; /Users/xxxxx/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;Please&lt;/span&gt;&lt;span style="color:#2AA198"&gt; note&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; knowledge&lt;/span&gt;&lt;span style="color:#2AA198"&gt; of&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;span style="color:#2AA198"&gt; required&lt;/span&gt;&lt;span style="color:#2AA198"&gt; to&lt;/span&gt;&lt;span style="color:#2AA198"&gt; access&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;the&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository.&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Losing&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; means&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; data&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;irrecoverably&lt;/span&gt;&lt;span style="color:#2AA198"&gt; lost.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;N'oubliez pas votre mot de passe, car les données chiffrées seront irrécupérables en cas d'oubli.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/01.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sauvegarde des données&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Exécutez cette commande pour sauvegarder le dossier &lt;em&gt;~/Documents/Note&lt;/em&gt; dans le dépôt &lt;em&gt;~/Documents/NoteE2EE&lt;/em&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;À la première exécution, vous verrez le nombre de fichiers et répertoires sauvegardés, ainsi que l'ID du "snapshot" (instantané) créé.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/02.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;La commande peut être exécutée plusieurs fois (chaque exécution crée un nouveau snapshot)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/03.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;Comme les sauvegardes sont incrémentielles, ne vous inquiétez pas de l'espace disque.&lt;/p&gt;
&lt;p&gt;Utilisez cette commande pour afficher la liste des snapshots dans le dépôt:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Le dossier "NoteE2EE" contient vos données chiffrées. Vous pouvez le stocker en toute sécurité sur votre disque dur local, un disque externe ou un cloud, selon le principe 3-2-1, sans craindre de fuites de données.&lt;/p&gt;
&lt;h3&gt;Optimisation des paramètres de sauvegarde&lt;/h3&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --pack-size&lt;/span&gt;&lt;span style="color:#D33682"&gt; 32&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --exclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.tmp"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --iexclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.LOG"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --limit-upload&lt;/span&gt;&lt;span style="color:#D33682"&gt; 1024&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;L'option &lt;code&gt;--pack-size&lt;/code&gt; permet de contrôler efficacement le nombre de fichiers cibles, évitant que les gros fichiers ne soient divisés en trop de petits fichiers. Les fichiers historiques ne sont pas affectés, seule la sauvegarde incrémentielle actuelle l'est.&lt;/p&gt;
&lt;p&gt;En complément de &lt;code&gt;--limit-upload&lt;/code&gt;, il existe un paramètre &lt;code&gt;--limit-download&lt;/code&gt; pour limiter la vitesse de téléchargement.&lt;/p&gt;
&lt;p&gt;Si vous développez des outils basés sur Restic, le paramètre &lt;code&gt;--json&lt;/code&gt; est très utile:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;29&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;204482794&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0.2808864315308279&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;13&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;93753349&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;1&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"summary"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;8&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"tree_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;756&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added_packed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;608&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_duration"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;5.552792709&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_start"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:04.949151+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_end"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:10.501995+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"snapshot_id"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"74e465ed71f7fb5b7abb562d4cb9d067f20d89a1a9f3ed4ed32a0bc73e8abab1"&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ces données permettent de créer des barres de progression et d'afficher le volume des fichiers sauvegardés.&lt;/p&gt;
&lt;h3&gt;Plus de types de stockage (Backends)&lt;/h3&gt;
&lt;p&gt;La commande &lt;code&gt;restic init --repo ~/Documents/NoteE2EE&lt;/code&gt; a créé un dépôt local.&lt;/p&gt;
&lt;p&gt;Voici un exemple pour un stockage compatible S3:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Configuration des variables d'environnement&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_ACCESS_KEY_ID=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_ACCESS_KEY_I&lt;/span&gt;&lt;span style="color:#657B83"&gt;D&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_SECRET_ACCESS_KEY=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_SECRET_ACCESS_KE&lt;/span&gt;&lt;span style="color:#657B83"&gt;Y&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_DEFAULT_REGION=cn-east-1&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Initialisation du dépôt et sauvegarde&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --verbose&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note: Si la variable &lt;code&gt;AWS_DEFAULT_REGION&lt;/code&gt; n'est pas définie, &lt;em&gt;us-east-1&lt;/em&gt; sera utilisé par défaut.&lt;/p&gt;
&lt;p&gt;Pour d'autres plateformes comme Amazon S3, Backblaze B2, Google Cloud, consultez: &lt;a href="https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html"&gt;https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Gestion des snapshots&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Conservation des snapshots récents&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si vous exécutez &lt;code&gt;backup&lt;/code&gt; régulièrement, vous pouvez avoir trop de sauvegardes. Cette commande permet de ne conserver que les 7 derniers snapshots:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#657B83"&gt; [chemin_du_dépôt] forget --keep-last 7 --prune&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Étiquettes de snapshot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez spécifier plusieurs étiquettes lors de la sauvegarde (&lt;em&gt;--tag "v1.0" --tag "daily"&lt;/em&gt;):&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --tag&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "v1.0"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Vous pouvez également modifier les étiquettes des snapshots existants:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Ajouter une étiquette&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --add&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 8c5c9d50&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Supprimer une étiquette&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --remove&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#D33682"&gt; 43547193&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# Définir plusieurs étiquettes&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --set&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important,project2"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; a1ff1a78&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Notez que l'ID du snapshot change après chaque modification.&lt;/p&gt;
&lt;h3&gt;Vérification de l'intégrité des sauvegardes&lt;/h3&gt;
&lt;p&gt;Les sauvegardes stockées sur le cloud ne sont pas garanties à 100% contre la perte ou la corruption. La commande check permet de vérifier l'intégrité:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="04.jpg" src="https://images.yasking.org/technology/1743676450/04.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Simulons maintenant une "corruption" en modifiant le nom d'un fichier dans le répertoire data de NoteE2EE, en ajoutant un underscore au début pour simuler une perte ou corruption:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/05.jpg" width="42.00%" /&gt;&lt;/p&gt;
&lt;p&gt;En exécutant à nouveau la commande check, un message indique que le dépôt est anormal et nécessite une réparation, comme prévu:&lt;/p&gt;
&lt;p&gt;&lt;img alt="06.jpg" src="https://images.yasking.org/technology/1743676450/06.jpg"&gt;&lt;/p&gt;
&lt;h3&gt;Restauration d'un snapshot dans un répertoire spécifique&lt;/h3&gt;
&lt;p&gt;Visualisation des snapshots existants:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Exportation d'un snapshot spécifique:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;5fcd966f est l'ID du snapshot, que vous pouvez trouver avec la commande snapshots. Le répertoire NoteRestore sera créé automatiquement s'il n'existe pas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si votre dépôt est volumineux et que vous souhaitez restaurer uniquement certains fichiers ou dossiers:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --include&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Epub电子书&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;"Epub电子书" est un dossier situé à la racine du dépôt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Utiliser copy plutôt que backup&lt;/h3&gt;
&lt;p&gt;Si vous n'avez qu'un seul dépôt chiffré, utilisez simplement backup à chaque fois. Mais si vous suivez le principe 3-2-1 avec plusieurs dépôts chiffrés, il n'est pas efficace d'exécuter backup plusieurs fois vers différents dépôts.&lt;/p&gt;
&lt;p&gt;Dans ce cas, utilisez &lt;code&gt;copy&lt;/code&gt;, qui garantit une cohérence stricte des données avec d'excellentes performances:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;span style="color:#2AA198"&gt; copy&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --from-repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Résumé de l'IA (que je trouve pertinent):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si vous devez synchroniser des données entre plusieurs dépôts Restic, &lt;code&gt;copy&lt;/code&gt; est toujours le meilleur choix — il fonctionne comme un "transporteur de données" professionnel entre dépôts, tandis que &lt;code&gt;backup&lt;/code&gt; est un "collecteur" orienté vers les données brutes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Essayez Restic Browser&lt;/h3&gt;
&lt;p&gt;Si vous n'aimez pas les opérations en ligne de commande, essayez cet outil open source: &lt;a href="https://github.com/emuell/restic-browser"&gt;emuell/restic-browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="07.jpg" src="https://images.yasking.org/technology/1743676450/07.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Développé avec Rust + TypeScript, il ne pèse que quelques mégaoctets et offre uniquement des fonctions de lecture. Comme son nom "Browser" l'indique, il permet de parcourir les dépôts chiffrés et facilite la recherche de fichiers dans les snapshots.&lt;/p&gt;
&lt;h3&gt;Vous pourriez aussi avoir besoin d'Autorestic&lt;/h3&gt;
&lt;p&gt;Documentation: &lt;a href="https://autorestic.vercel.app/"&gt;Autorestic&lt;/a&gt; &lt;a href="https://autorestic.vercel.app/quick"&gt;Quick Start&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Autorestic est un wrapper autour de l'étonnant &lt;a href="https://restic.net/"&gt;restic&lt;/a&gt;. Bien qu'étant remarquable, l'interface en ligne de commande de restic peut être un peu intimidante et difficile à gérer si vous avez plusieurs emplacements différents que vous souhaitez sauvegarder vers plusieurs destinations. Cet utilitaire vise à faciliter ce processus 🙂&lt;/p&gt;
&lt;p&gt;Autorestic est un wrapper développé autour de l'excellent outil restic. Bien que l'outil en ligne de commande restic soit exceptionnel, il peut devenir complexe et difficile à gérer lorsque vous devez synchroniser des sauvegardes de plusieurs emplacements vers différentes destinations. Cet utilitaire vise à simplifier ce processus, rendant la gestion des sauvegardes multi-cibles plus facile et plus agréable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Fichier de configuration&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Créez un fichier de configuration avec le contenu suivant:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;version&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;backends&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_primary&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_backup&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE-copy"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;locations&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  notes&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    from&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/Note"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    to&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_primary&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_backup&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    options&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      forget&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;        keep-last&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Modifiez les permissions du fichier de configuration (recommandé):&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; chmod&lt;/span&gt;&lt;span style="color:#D33682"&gt; 600&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/.autorestic.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Location et Backend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dans Autorestic, Location décrit le contenu et la destination de la sauvegarde (from / to), tandis que Backend définit la destination de sauvegarde.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vérification de la configuration&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/08.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything is fine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Exécution manuelle de la sauvegarde&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sauvegarde complète:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Sauvegarde d'une Location spécifique:&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -l&lt;/span&gt;&lt;span style="color:#2AA198"&gt; notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Sortie:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/09.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;Cette solution répond parfaitement à mes besoins actuels et est suffisamment facile à utiliser. Je mettrai à jour cet article après l'avoir utilisée pendant un certain temps si j'ai des compléments à ajouter.&lt;/p&gt;
&lt;h3&gt;Références&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://restic.readthedocs.io/en/stable/"&gt;Restic Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://autorestic.vercel.app/quick"&gt;Autorestic Quick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Technology"></category><category term="Software"></category></entry><entry><title>Resticで重要なデータをバックアップする</title><link href="https://blog.yasking.org/ja/a/obsidian-encrypt-backup-with-restic" rel="alternate"></link><published>2025-04-03T21:00:00+08:00</published><updated>2025-04-03T21:00:00+08:00</updated><author><name>Yieldone</name></author><id>tag:blog.yasking.org,2025-04-03:/ja/a/obsidian-encrypt-backup-with-restic</id><summary type="html">&lt;p&gt;以前はかなり長い間、Cryptomatorを使ってコンテンツを管理していました。Cryptomatorの利点は、ローカルデータにアクセスするにもパスワードが必要なことです。暗号化されたコンテン …&lt;/p&gt;</summary><content type="html">&lt;p&gt;以前はかなり長い間、Cryptomatorを使ってコンテンツを管理していました。Cryptomatorの利点は、ローカルデータにアクセスするにもパスワードが必要なことです。暗号化されたコンテンツはNutstore、Dropboxなどの同期ドライブに置いておけば、ファイルを追加または変更するたびにリアルタイムでクラウドにアップロードできます。&lt;/p&gt;
&lt;p&gt;保存するコンテンツが編集する必要のない増分ファイルで、主に追加・置換するだけなら、私はCryptomatorを試すことを強くお勧めします。電子スキャン、画像、スプレッドシートなどのリソースを保存するのに適しています。&lt;/p&gt;
&lt;p&gt;しかし、macOSでObsidianなどのソフトウェアを使って知識ベースを管理し、頻繁に編集する必要がある場合、Cryptomatorで復号化した後のテキストファイルの編集は非常に不便です。問題を避けるために、プレーンテキストファイルを編集するときは、コピーして編集した後、元のファイルを置き換える必要がありました。これはかなり面倒です。&lt;/p&gt;
&lt;p&gt;偶然、&lt;a href="https://github.com/restic/restic"&gt;Restic&lt;/a&gt;について知りました。ObsidianなどのノートソフトウェアのVaultを暗号化してバックアップし、クラウドドライブやS3などのクラウドプラットフォームにアップロードしたい場合、Resticが最適です。&lt;/p&gt;
&lt;h3&gt;クイックスタート&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Resticのインストール&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;macOS&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;主要なオペレーティングシステムをサポートしています。詳細は：&lt;a href="https://restic.readthedocs.io/en/latest/020_installation.html"&gt;https://restic.readthedocs.io/en/latest/020_installation.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ローカルリポジトリの初期化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;リポジトリは簡単に言えば、暗号化されたファイルを保存するためのフォルダです。初期化プロセスでは、いくつかのメタデータが生成されます。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; for&lt;/span&gt;&lt;span style="color:#2AA198"&gt; new&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; again:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;created&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 0a40262533&lt;/span&gt;&lt;span style="color:#2AA198"&gt; at&lt;/span&gt;&lt;span style="color:#2AA198"&gt; /Users/xxxxx/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;Please&lt;/span&gt;&lt;span style="color:#2AA198"&gt; note&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; knowledge&lt;/span&gt;&lt;span style="color:#2AA198"&gt; of&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;span style="color:#2AA198"&gt; required&lt;/span&gt;&lt;span style="color:#2AA198"&gt; to&lt;/span&gt;&lt;span style="color:#2AA198"&gt; access&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;the&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository.&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Losing&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; means&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; data&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;irrecoverably&lt;/span&gt;&lt;span style="color:#2AA198"&gt; lost.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;パスワードを覚えておいてください。一度忘れると、暗号化されたデータを復号化する方法はなくなります。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/01.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;データのバックアップ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;コマンドを実行して、&lt;em&gt;~/Documents/Note&lt;/em&gt;フォルダを&lt;em&gt;~/Documents/NoteE2EE&lt;/em&gt;リポジトリにバックアップします。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;初回実行時には、バックアップされたファイルとディレクトリの数が表示され、「スナップショット」IDがエコーされます。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/02.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;コマンドは複数回実行できます（実行するたびに新しいスナップショットが作成されます）。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/03.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;増分バックアップなので、スナップショットが大量のスペースを占めることを心配する必要はありません。&lt;/p&gt;
&lt;p&gt;以下のコマンドを使用して、リポジトリ内のスナップショットリストを表示できます。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このリポジトリフォルダ「NoteE2EE」は暗号化されたコンテンツです。3-2-1原則に従って、ローカルディスク、外部ディスク、クラウドドライブに安全に保存でき、データ漏洩を心配する必要はありません。&lt;/p&gt;
&lt;h3&gt;バックアップコマンドパラメータの最適化&lt;/h3&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --pack-size&lt;/span&gt;&lt;span style="color:#D33682"&gt; 32&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --exclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.tmp"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --iexclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.LOG"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --limit-upload&lt;/span&gt;&lt;span style="color:#D33682"&gt; 1024&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;--pack-size&lt;/code&gt;パラメータを上手く使用すると、ターゲットファイルの数を効果的に制御でき、大きなファイルが多くの小さなファイルに分割されるのを防ぎます。履歴ファイルは影響を受けず、現在の増分バックアップにのみ影響します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--limit-upload&lt;/code&gt;に対応して、ダウンロード速度を制限するための&lt;code&gt;--limit-download&lt;/code&gt;パラメータもあります。&lt;/p&gt;
&lt;p&gt;Resticをベースに小さなツールを開発する場合は、&lt;code&gt;--json&lt;/code&gt;パラメータが非常に重要です。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;29&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;204482794&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0.2808864315308279&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;13&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;93753349&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;1&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"summary"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;8&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"tree_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;756&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added_packed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;608&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_duration"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;5.552792709&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_start"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:04.949151+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_end"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:10.501995+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"snapshot_id"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"74e465ed71f7fb5b7abb562d4cb9d067f20d89a1a9f3ed4ed32a0bc73e8abab1"&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このデータに基づいて、進捗バーを作成したり、バックアップファイルのデータ量を表示したりできます。&lt;/p&gt;
&lt;h3&gt;その他のバックエンドストレージタイプ&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;restic init --repo ~/Documents/NoteE2EE&lt;/code&gt;コマンドを使用して、ローカルリポジトリを作成しました。&lt;/p&gt;
&lt;p&gt;以下はS3互換ストレージの例です。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 環境変数の設定&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_ACCESS_KEY_ID=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_ACCESS_KEY_I&lt;/span&gt;&lt;span style="color:#657B83"&gt;D&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_SECRET_ACCESS_KEY=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_SECRET_ACCESS_KE&lt;/span&gt;&lt;span style="color:#657B83"&gt;Y&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_DEFAULT_REGION=cn-east-1&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# リポジトリの初期化とバックアップ&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --verbose&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意：&lt;code&gt;AWS_DEFAULT_REGION&lt;/code&gt;環境変数が設定されていない場合、デフォルトとして&lt;em&gt;us-east-1&lt;/em&gt;が使用されます。&lt;/p&gt;
&lt;p&gt;Amazon S3、Backblaze B2、Google Cloudなどの他のプラットフォームとストレージについては、以下のドキュメントを参照してください：&lt;a href="https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html"&gt;https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;スナップショット管理&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;最近のスナップショットを保持する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;定期的に&lt;code&gt;backup&lt;/code&gt;を実行してバックアップすることがありますが、バックアップが多すぎると煩わしくなります。以下のコマンドを実行すると、最新の7つのスナップショットのみを保持できます。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#657B83"&gt; [リポジトリパス] forget --keep-last 7 --prune&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;スナップショットのタグ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;バックアップ時に複数のタグを指定できます（&lt;em&gt;--tag "v1.0" --tag "daily"&lt;/em&gt;）。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --tag&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "v1.0"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;既存のスナップショットのタグを変更することもできます。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# タグを追加&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --add&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 8c5c9d50&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# タグを削除&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --remove&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#D33682"&gt; 43547193&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 複数のタグを設定&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --set&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important,project2"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; a1ff1a78&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注目すべきは、変更するたびにスナップショットIDが変わることです。&lt;/p&gt;
&lt;h3&gt;バックアップの整合性チェック&lt;/h3&gt;
&lt;p&gt;クラウドに保存されたバックアップは、ファイルが100％失われないことや損傷しないことを保証できません。checkコマンドを使用して検証できます。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="04.jpg" src="https://images.yasking.org/technology/1743676450/04.jpg"&gt;&lt;/p&gt;
&lt;p&gt;ここで「損傷」をシミュレートしてみましょう。例えば、NoteE2EEディレクトリ内のdataディレクトリにあるファイルを見つけ、ファイル名を変更して、先頭にアンダースコアを追加し、ファイルの損傷/損失をシミュレートします。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/05.jpg" width="42.00%" /&gt;&lt;/p&gt;
&lt;p&gt;checkコマンドを再度実行すると、リポジトリが異常であり、修復が必要であることが表示されます。これは予想通りです。&lt;/p&gt;
&lt;p&gt;&lt;img alt="06.jpg" src="https://images.yasking.org/technology/1743676450/06.jpg"&gt;&lt;/p&gt;
&lt;h3&gt;スナップショットを特定のディレクトリに復元する&lt;/h3&gt;
&lt;p&gt;既存のスナップショットを表示：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;特定のスナップショットをエクスポート：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;5fcd966fはスナップショットIDで、snapshotsコマンドで確認できます。また、NoteRestoreディレクトリが存在しない場合は自動的に作成されます。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;リポジトリが大きく、特定のファイルやディレクトリのみをエクスポートしたい場合は、次のコマンドを使用します。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --include&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Epub电子书&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;ここでの「--include Epub电子书」は、リポジトリのルートディレクトリにあるフォルダを指します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;「copy」を使用して「backup」の代わりに&lt;/h3&gt;
&lt;p&gt;暗号化されたリポジトリが1つしかない場合は、毎回backupを使用すれば問題ありません。しかし、3-2-1原則に従ってバックアップし、複数の暗号化リポジトリがある場合、異なるリポジトリに対して複数回backupを実行するのは効率的ではありません。&lt;/p&gt;
&lt;p&gt;この場合、&lt;code&gt;copy&lt;/code&gt;を使用する必要があります。これにより、データの厳密な一貫性が保証され、パフォーマンスも優れています。&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;span style="color:#2AA198"&gt; copy&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --from-repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;AIからの要約（私は良いと思います）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;複数のResticリポジトリ間でデータを同期する必要がある場合、&lt;code&gt;copy&lt;/code&gt;は常に最適な選択です—それはリポジトリ間のプロフェッショナルな「データ移動者」のように機能し、&lt;code&gt;backup&lt;/code&gt;は元のデータの「コレクター」のようなものです。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Restic Browserを試してみる&lt;/h3&gt;
&lt;p&gt;コマンドライン操作が好きでない場合は、このオープンソースツールを試してみることができます：&lt;a href="https://github.com/emuell/restic-browser"&gt;emuell/restic-browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="07.jpg" src="https://images.yasking.org/technology/1743676450/07.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Rust + TypeScriptで開発され、サイズは数メガバイトしかなく、読み取り専用機能しかありません。「Browser」という名前が示すように、暗号化されたリポジトリを閲覧でき、スナップショット内のファイルを探すのに便利です。&lt;/p&gt;
&lt;h3&gt;Autoresticも必要かもしれません&lt;/h3&gt;
&lt;p&gt;ドキュメント：&lt;a href="https://autorestic.vercel.app/"&gt;Autorestic&lt;/a&gt; &lt;a href="https://autorestic.vercel.app/quick"&gt;クイックスタート&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Autorestic is a wrapper around the amazing &lt;a href="https://restic.net/"&gt;restic&lt;/a&gt;. While being amazing the restic cli can be a bit overwhelming and difficult to manage if you have many different location that you want to backup to multiple locations. This utility is aimed at making this easier 🙂&lt;/p&gt;
&lt;p&gt;Autoresticは、優れたresticツールを基に開発されたラッパーです。resticコマンドラインツール自体は素晴らしいですが、複数の異なる場所からのバックアップデータを複数のストレージターゲットに同期する必要がある場合、その操作は複雑で管理が難しくなる可能性があります。このツールは、このプロセスを簡素化し、マルチターゲットバックアップ管理をより簡単で便利にすることを目的としています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;インストール&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;設定ファイル&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以下の内容で設定ファイルを作成します：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;version&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;backends&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_primary&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_backup&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE-copy"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;locations&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  notes&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    from&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/Note"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    to&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_primary&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_backup&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    options&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      forget&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;        keep-last&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;設定ファイルのパーミッションを変更（推奨）：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; chmod&lt;/span&gt;&lt;span style="color:#D33682"&gt; 600&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/.autorestic.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LocationとBackend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Autoresticでは、Locationはバックアップのコンテンツとターゲット（from / to）を記述し、Backendはバックアップの宛先を定義します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;設定の検証&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/08.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything is fine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;手動バックアップの実行&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;完全バックアップ：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;特定のLocationバックアップ：&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -l&lt;/span&gt;&lt;span style="color:#2AA198"&gt; notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;出力：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/09.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;現在、このソリューションは私のニーズに完全に合っており、使いやすいです。しばらく使用した後、追加情報があれば更新します。&lt;/p&gt;
&lt;h3&gt;参考&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://restic.readthedocs.io/en/stable/"&gt;Restic Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://autorestic.vercel.app/quick"&gt;Autorestic Quick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Technology"></category><category term="Software"></category></entry><entry><title>使用 Restic 来备份重要数据</title><link href="https://blog.yasking.org/a/obsidian-encrypt-backup-with-restic" rel="alternate"></link><published>2025-04-03T21:00:00+08:00</published><updated>2025-04-03T21:00:00+08:00</updated><author><name>Yieldone</name></author><id>tag:blog.yasking.org,2025-04-03:/a/obsidian-encrypt-backup-with-restic</id><summary type="html">&lt;p&gt;之前使用了相当长一段时间的 Cryptomator 管理内容，它有个好处是本地数据也需要密码才能访问，加密后的内容放到坚果云、Dropbox 等 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;之前使用了相当长一段时间的 Cryptomator 管理内容，它有个好处是本地数据也需要密码才能访问，加密后的内容放到坚果云、Dropbox 等同步盘，每次添加或修改文件后就可以实时上传到网盘&lt;/p&gt;
&lt;p&gt;如果存储的内容是无需编辑的增量文件，平时也主要是增加、替换资源，那我还是很推荐试试 Cryptomator，它很适合保存电子扫描件、图像、表格文档这类资源&lt;/p&gt;
&lt;p&gt;但在 macOS 下，如果你使用 Obsidian 等软件管理知识库，并且有频繁的编辑需求，使用 Cryptomator 解密后的文本内容编辑就很不友好，为了避免出现异常，编辑纯文本文件时，我不得不把它复制出来，编辑后再替换原有文件，这就很有些麻烦&lt;/p&gt;
&lt;p&gt;无意间了解到 &lt;a href="https://github.com/restic/restic"&gt;Restic&lt;/a&gt;，如果你想要对 Obsidian 等笔记软件的 Vault 进行加密备份、上传到网盘、S3 等云平台，那么 Restic 正适合&lt;/p&gt;
&lt;h3&gt;Quick Start&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;安装 Restic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;macOS&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;支持主流操作系统，详见：&lt;a href="https://restic.readthedocs.io/en/latest/020_installation.html"&gt;https://restic.readthedocs.io/en/latest/020_installation.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;初始化本地存储库&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;存储库简单来说就是一个文件夹，用来存储加密后的文件，初始化的过程会生成一些元数据&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; for&lt;/span&gt;&lt;span style="color:#2AA198"&gt; new&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;enter&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; again:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;created&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 0a40262533&lt;/span&gt;&lt;span style="color:#2AA198"&gt; at&lt;/span&gt;&lt;span style="color:#2AA198"&gt; /Users/xxxxx/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;Please&lt;/span&gt;&lt;span style="color:#2AA198"&gt; note&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; knowledge&lt;/span&gt;&lt;span style="color:#2AA198"&gt; of&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;span style="color:#2AA198"&gt; required&lt;/span&gt;&lt;span style="color:#2AA198"&gt; to&lt;/span&gt;&lt;span style="color:#2AA198"&gt; access&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;the&lt;/span&gt;&lt;span style="color:#2AA198"&gt; repository.&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Losing&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; password&lt;/span&gt;&lt;span style="color:#2AA198"&gt; means&lt;/span&gt;&lt;span style="color:#2AA198"&gt; that&lt;/span&gt;&lt;span style="color:#2AA198"&gt; your&lt;/span&gt;&lt;span style="color:#2AA198"&gt; data&lt;/span&gt;&lt;span style="color:#2AA198"&gt; is&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;irrecoverably&lt;/span&gt;&lt;span style="color:#2AA198"&gt; lost.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;记住密码，遗忘后加密数据将再无解密途径&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/01.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;备份数据&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;执行命令将 &lt;em&gt;~/Documents/Note&lt;/em&gt; 文件夹备份到 &lt;em&gt;~/Documents/NoteE2EE&lt;/em&gt; 存储库&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;首次运行可以看到它备份的文件和目录数，回显了 “snapshot” 快照的 ID &lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/02.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;命令可以多次运行（每运行一次创建一个快照）&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/03.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;因为是增量创建，无需担心快照会占用过大空间&lt;/p&gt;
&lt;p&gt;使用以下命令可以查看存储库中的快照列表&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;这个存储库文件夹 “NoteE2EE” 是加密后的内容，可以根据 3-2-1 原则，安全的存放在本地硬盘、移动硬盘、网盘中，无需担心数据泄露&lt;/p&gt;
&lt;h3&gt;备份命令参数优化&lt;/h3&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --pack-size&lt;/span&gt;&lt;span style="color:#D33682"&gt; 32&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --exclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.tmp"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --iexclude=&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"*.LOG"&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --limit-upload&lt;/span&gt;&lt;span style="color:#D33682"&gt; 1024&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#CB4B16"&gt;    --json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;善用 &lt;code&gt;--pack-size&lt;/code&gt; 参数可以有效控制目标文件数量，避免大文件被拆成特别多的小文件，历史文件不会受到影响，只会影响当次增量的备份&lt;/p&gt;
&lt;p&gt;与 &lt;code&gt;--limit-upload&lt;/code&gt; 相对应的，有一个 &lt;code&gt;--limit-download&lt;/code&gt; 参数，用于限制下载速度&lt;/p&gt;
&lt;p&gt;如果基于 Restic 开发一些小工具，那么 &lt;code&gt;--json&lt;/code&gt; 参数很有必要&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;29&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;204482794&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0.2808864315308279&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;13&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;93753349&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"status"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"percent_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;1&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"bytes_done"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;{&lt;/span&gt;&lt;span style="color:#859900"&gt;"message_type"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"summary"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"files_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_new"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_changed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"dirs_unmodified"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;8&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;0&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"tree_blobs"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;756&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"data_added_packed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;608&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_files_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;41&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_bytes_processed"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;333776710&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"total_duration"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#D33682"&gt;5.552792709&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_start"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:04.949151+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"backup_end"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"2025-04-02T18:30:10.501995+08:00"&lt;/span&gt;&lt;span style="color:#657B83"&gt;,&lt;/span&gt;&lt;span style="color:#859900"&gt;"snapshot_id"&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;span style="color:#2AA198"&gt;"74e465ed71f7fb5b7abb562d4cb9d067f20d89a1a9f3ed4ed32a0bc73e8abab1"&lt;/span&gt;&lt;span style="color:#657B83"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;基于这些数据可以做进度条、展示备份文件的数据量&lt;/p&gt;
&lt;h3&gt;更多 Backends 存储类型&lt;/h3&gt;
&lt;p&gt;通过 &lt;code&gt;restic init --repo ~/Documents/NoteE2EE&lt;/code&gt; 命令，创建了一个本地的存储库&lt;/p&gt;
&lt;p&gt;以下是一个 S3-compatible Storage 兼容 S3 协议存储的示例&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 设置环境变量&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_ACCESS_KEY_ID=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_ACCESS_KEY_I&lt;/span&gt;&lt;span style="color:#657B83"&gt;D&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_SECRET_ACCESS_KEY=&lt;/span&gt;&lt;span style="color:#859900"&gt;&amp;#x3C;&lt;/span&gt;&lt;span style="color:#2AA198"&gt;YOUR_SECRET_ACCESS_KE&lt;/span&gt;&lt;span style="color:#657B83"&gt;Y&lt;/span&gt;&lt;span style="color:#859900"&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; export&lt;/span&gt;&lt;span style="color:#2AA198"&gt; AWS_DEFAULT_REGION=cn-east-1&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 初始化存储库并备份&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; s3:https://s3.bitiful.net/note-e2ee&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --verbose&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;注意：&lt;code&gt;AWS_DEFAULT_REGION&lt;/code&gt; 环境变量不设置默认会使用 &lt;em&gt;us-east-1&lt;/em&gt; 作为默认值&lt;/p&gt;
&lt;p&gt;其它平台和存储例如 Amazon S3、Backblaze B2、Google Cloud 等，可参考文档：&lt;a href="https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html"&gt;https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;快照管理&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;保留最近的快照&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们可能定时/定期运行 &lt;code&gt;backup&lt;/code&gt; 进行备份，但过多的备份会让人困扰，运行以下命令只保留最近的 7 个快照&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#657B83"&gt; [仓库路径] forget --keep-last 7 --prune&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;快照的标签&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以在备份的同时指定多个标签（&lt;em&gt;--tag "v1.0" --tag "daily"&lt;/em&gt;）&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --tag&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "v1.0"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/Note&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;也可以对已存在的快照标签进行修改&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 追加标签&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --add&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 8c5c9d50&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 移除标签&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --remove&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important"&lt;/span&gt;&lt;span style="color:#D33682"&gt; 43547193&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#93A1A1;font-style:italic"&gt;# 设置多个标签&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; tag&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --set&lt;/span&gt;&lt;span style="color:#2AA198"&gt; "important,project2"&lt;/span&gt;&lt;span style="color:#2AA198"&gt; a1ff1a78&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;值得注意的是，每次修改后，快照的 ID 会发生变化&lt;/p&gt;
&lt;h3&gt;备份完整性核对&lt;/h3&gt;
&lt;p&gt;存储在网盘上的备份，并不能保证文件百分百不丢失或损毁，通过 check 命令可以进行核对&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="04.jpg" src="https://images.yasking.org/technology/1743676450/04.jpg"&gt;&lt;/p&gt;
&lt;p&gt;现在人为“损坏”，例如找到 NoteE2EE 目录内 data 目录下的一个文件，修改文件名，在前方添加一个下划线，模拟文件损坏/丢失&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/05.jpg" width="42.00%" /&gt;&lt;/p&gt;
&lt;p&gt;再次运行 check 命令，提示存储库异常，需要修复，符合预期&lt;/p&gt;
&lt;p&gt;&lt;img alt="06.jpg" src="https://images.yasking.org/technology/1743676450/06.jpg"&gt;&lt;/p&gt;
&lt;h3&gt;下载快照到指定目录&lt;/h3&gt;
&lt;p&gt;查看现有快照&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; snapshots&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;导出指定快照&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;5fcd966f 为快照 ID，通过 snapshots 命令可以查询到；另外 NoteRestore 目录如果不存在会自动创建&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;当你的存储库很大，只想要导出部分文件、目录，使用以下命令&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restore&lt;/span&gt;&lt;span style="color:#2AA198"&gt; 5fcd966f&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --target&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Downloads/NoteRestore/&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --include&lt;/span&gt;&lt;span style="color:#2AA198"&gt; Epub电子书&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;其中的「--include Epub电子书」，这个目录是存储库根目录下的一个文件夹&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;此时使用 copy 而非 backup&lt;/h3&gt;
&lt;p&gt;如果你仅有一个加密后的存储库，那么每次备份使用 backup 即可，如果根据 3-2-1 原则备份，存在多个加密后的存储库，那么肯定不适合重复运行 backup 多次提交到不同的存储库&lt;/p&gt;
&lt;p&gt;这时候需要使用 &lt;code&gt;copy&lt;/code&gt;，它会保证严格数据一致性，且性能很好&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; init&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; restic&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -r&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE-copy&lt;/span&gt;&lt;span style="color:#2AA198"&gt; copy&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; --from-repo&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/Documents/NoteE2EE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;来自 AI 的总结（我觉着说的挺好）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果需要在多个Restic仓库间同步数据，&lt;code&gt;copy&lt;/code&gt; 永远是首选——它像专业的仓库间「数据搬运工」，而 &lt;code&gt;backup&lt;/code&gt; 则是面向原始数据的「采集器」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;不妨试试 Restic Browser&lt;/h3&gt;
&lt;p&gt;如果你不是很喜欢命令行操作，那么可以试试这个开源小工具：&lt;a href="https://github.com/emuell/restic-browser"&gt;emuell/restic-browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="07.jpg" src="https://images.yasking.org/technology/1743676450/07.jpg"&gt;&lt;/p&gt;
&lt;p&gt;使用 Rust + TypeScript 开发，只有几兆大小，只有只读功能，正如工具名中的 “Browser”，可以浏览加密后的存储库，再从快照中翻文件的时候会方便些&lt;/p&gt;
&lt;h3&gt;可能你也需要 Autorestic&lt;/h3&gt;
&lt;p&gt;文档地址：&lt;a href="https://autorestic.vercel.app/"&gt;Autorestic&lt;/a&gt; &lt;a href="https://autorestic.vercel.app/quick"&gt;Quick Start&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Autorestic is a wrapper around the amazing &lt;a href="https://restic.net/"&gt;restic&lt;/a&gt;. While being amazing the restic cli can be a bit overwhelming and difficult to manage if you have many different location that you want to backup to multiple locations. This utility is aimed at making this easier 🙂&lt;/p&gt;
&lt;p&gt;Autorestic 是基于卓越的 restic 工具开发的封装器。尽管 restic 命令行工具本身非常出色，但当您需要将多个不同位置的备份数据同步至多个存储目标时，其操作可能会显得复杂且难以管理。本工具旨在简化这一流程，让多目标备份管理变得更加轻松便捷。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;安装&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; brew&lt;/span&gt;&lt;span style="color:#2AA198"&gt; install&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;配置文件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;创建配置文件，内容如下&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;version&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;2&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;backends&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_primary&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  note_backup&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    type&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;local&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    path&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/NoteE2EE-copy"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    env&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      RESTIC_PASSWORD&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"your-restic-vault-password"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;locations&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;  notes&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    from&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#2AA198"&gt;"~/Documents/Note"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    to&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_primary&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#657B83"&gt;      - &lt;/span&gt;&lt;span style="color:#2AA198"&gt;note_backup&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;    options&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;      forget&lt;/span&gt;&lt;span style="color:#657B83"&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;        keep-last&lt;/span&gt;&lt;span style="color:#657B83"&gt;: &lt;/span&gt;&lt;span style="color:#D33682"&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;修改配置文件权限（建议）&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; chmod&lt;/span&gt;&lt;span style="color:#D33682"&gt; 600&lt;/span&gt;&lt;span style="color:#2AA198"&gt; ~/.autorestic.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Location 与 Backend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 Autorestic 中，Location 描述了备份的内容和目标（from / to），Backend 定义了备份的目标&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;配置检验&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/08.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything is fine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;手动执行备份&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;全部备份&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;特定 Location 备份&lt;/p&gt;
&lt;pre class="shiki solarized-light" style="background-color:#FDF6E3;color:#657B83" tabindex="0"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#268BD2"&gt;$&lt;/span&gt;&lt;span style="color:#2AA198"&gt; autorestic&lt;/span&gt;&lt;span style="color:#2AA198"&gt; backup&lt;/span&gt;&lt;span style="color:#CB4B16"&gt; -l&lt;/span&gt;&lt;span style="color:#2AA198"&gt; notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;输出&lt;/p&gt;
&lt;p&gt;&lt;img src="https://images.yasking.org/technology/1743676450/09.jpg" width="60.00%" /&gt;&lt;/p&gt;
&lt;p&gt;目前这个方案很切合我的需求，且足够易用，后续使用一段时间有补充再更新&lt;/p&gt;
&lt;h3&gt;参考&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://restic.readthedocs.io/en/stable/"&gt;Restic Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://autorestic.vercel.app/quick"&gt;Autorestic Quick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Technology"></category><category term="Software"></category></entry></feed>