2022-12-25 19:13:58 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<link
|
|
|
|
rel="stylesheet"
|
|
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.1.0/github-markdown.min.css"
|
|
|
|
/>
|
2022-12-30 09:21:16 +00:00
|
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
|
|
<link
|
|
|
|
href="https://fonts.googleapis.com/css2?family=Inter&family=JetBrains+Mono&display=swap"
|
|
|
|
rel="stylesheet"
|
|
|
|
/>
|
2022-12-25 19:13:58 +00:00
|
|
|
</head>
|
|
|
|
<style>
|
|
|
|
/* https://github.com/sindresorhus/github-markdown-css */
|
|
|
|
.markdown-body {
|
|
|
|
box-sizing: border-box;
|
|
|
|
min-width: 200px;
|
|
|
|
max-width: 980px;
|
|
|
|
margin: 0 auto;
|
|
|
|
padding: 45px;
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (max-width: 767px) {
|
|
|
|
.markdown-body {
|
|
|
|
padding: 15px;
|
|
|
|
}
|
|
|
|
}
|
2022-12-30 09:21:16 +00:00
|
|
|
|
|
|
|
.markdown-body {
|
|
|
|
font-family: "Inter", sans-serif;
|
|
|
|
}
|
|
|
|
|
|
|
|
.markdown-body code,
|
|
|
|
.markdown-body pre {
|
|
|
|
font-family: "JetBrains Mono", monospace;
|
|
|
|
}
|
2022-12-25 19:13:58 +00:00
|
|
|
</style>
|
|
|
|
<body class="markdown-body">
|
2022-12-25 19:22:39 +00:00
|
|
|
<div>
|
|
|
|
<a href="index">Index</a>
|
|
|
|
</div>
|
2022-12-30 09:26:06 +00:00
|
|
|
<h1>
|
|
|
|
<a
|
|
|
|
id="user-content-backup-my-way"
|
|
|
|
class="anchor"
|
|
|
|
aria-hidden="true"
|
|
|
|
href="#backup-my-way"
|
|
|
|
><span aria-hidden="true" class="octicon octicon-link"></span></a
|
|
|
|
>Backup my way
|
|
|
|
</h1>
|
|
|
|
<p>
|
|
|
|
First thing first, I want to list my own devices, which I have through the
|
|
|
|
years:
|
|
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<del
|
|
|
|
>Laptop Samsung NP300E4Z-S06VN (Old laptop which I give to my
|
|
|
|
mom)</del
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<del
|
|
|
|
><a
|
|
|
|
href="https://www.dell.com/support/home/en-vn/product-support/product/inspiron-15-3567-laptop/drivers"
|
|
|
|
rel="nofollow"
|
|
|
|
>Laptop Dell Inspiron 15 3567</a
|
|
|
|
>
|
|
|
|
(My mom bought it for me when I go to college, I give it to my mom
|
|
|
|
afterward)</del
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<del
|
|
|
|
><a
|
|
|
|
href="https://www.acer.com/ac/en/US/content/support-product/8841"
|
|
|
|
rel="nofollow"
|
|
|
|
>Laptop Acer Nitro AN515-45</a
|
|
|
|
>
|
|
|
|
(Gaming laptop which I buy for gaming, I give it to my sister)</del
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>MacBook Pro M1 2020 (My company laptop)</li>
|
|
|
|
<li>
|
|
|
|
<del
|
|
|
|
>Phone
|
|
|
|
<a
|
|
|
|
href="https://forum.xda-developers.com/c/lg-g3.3147/"
|
|
|
|
rel="nofollow"
|
|
|
|
>LG G3</a
|
|
|
|
>
|
|
|
|
(Bought long time ago, now is a brick)</del
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<del
|
|
|
|
>Phone
|
|
|
|
<a
|
|
|
|
href="https://forum.xda-developers.com/c/xiaomi-redmi-6a.7881/"
|
|
|
|
rel="nofollow"
|
|
|
|
>Xiaomi Redmi 6A</a
|
|
|
|
>
|
|
|
|
(I give it to my sister too)</del
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
Phone
|
|
|
|
<a
|
|
|
|
href="https://forum.xda-developers.com/c/xiaomi-poco-x3-nfc.11523/"
|
|
|
|
rel="nofollow"
|
|
|
|
>Xiaomi Poco X3 NFC</a
|
|
|
|
>
|
|
|
|
(Primary phone which I use daily)
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<p>App/Service I use daily:</p>
|
|
|
|
<ul>
|
|
|
|
<li><a href="https://bitwarden.com/" rel="nofollow">Bitwarden</a></li>
|
|
|
|
<li>
|
|
|
|
<a href="https://getaegis.app/" rel="nofollow">Aegis Authenticator</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="https://rclone.org/" rel="nofollow">Rclone</a></li>
|
|
|
|
<li><a href="https://restic.net/" rel="nofollow">restic</a></li>
|
|
|
|
<li><a href="https://tailscale.com/" rel="nofollow">Tailscale</a></li>
|
|
|
|
<li>GitHub / GitLab</li>
|
|
|
|
<li>Google Keep / Notion</li>
|
|
|
|
<li>Google Drive (I use 200GB plan)</li>
|
|
|
|
</ul>
|
|
|
|
<p>
|
|
|
|
The purpose is that I want my data to be safe, secure, and can be easily
|
|
|
|
recovered if I lost some devices; or in the worst situation, I lost all.
|
|
|
|
Because you know, it is hard to guess what is waiting for us in the
|
|
|
|
future.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
There are 2 sections which I want to share, the first is
|
|
|
|
<strong>How to backup</strong>, the second is
|
|
|
|
<strong>Recover strategy</strong>.
|
|
|
|
</p>
|
|
|
|
<h2>
|
|
|
|
<a
|
|
|
|
id="user-content-how-to-backup"
|
|
|
|
class="anchor"
|
|
|
|
aria-hidden="true"
|
|
|
|
href="#how-to-backup"
|
|
|
|
><span aria-hidden="true" class="octicon octicon-link"></span></a
|
|
|
|
>How to backup
|
|
|
|
</h2>
|
|
|
|
<p>
|
|
|
|
Before I talk about backup, I want to talk about data. In specifically,
|
|
|
|
which data should I backup?
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
I use Arch Linux and macOS, primarily work in the terminal so I have too
|
|
|
|
many dotfiles, for example, <code>~/.config/nvim/init.lua</code>. Each
|
|
|
|
time I reinstall Arch Linux (I like it a lot), I need to reconfigure all
|
|
|
|
the settings, and it is time-consuming.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
So for the DE and UI settings, I keep it as default as possible, unless
|
|
|
|
it's getting in my way, I leave the default setting there and forget about
|
|
|
|
it. The others are dotfiles, which I write my own
|
|
|
|
<a href="https://github.com/haunt98/dotfiles">dotfiles tool</a> to backup
|
|
|
|
and reconfigure easily and quickly. Also, I know that installing Arch
|
|
|
|
Linux is not easy, despite I install it too many times (Like thousand
|
|
|
|
times since I was in high school). Not because it is hard, but as life
|
|
|
|
goes on, the
|
|
|
|
<a
|
|
|
|
href="https://wiki.archlinux.org/title/installation_guide"
|
|
|
|
rel="nofollow"
|
|
|
|
>official install guide</a
|
|
|
|
>
|
|
|
|
keeps getting new update and covering too many cases for my own personal
|
|
|
|
use, so I write my own
|
|
|
|
<a href="https://github.com/haunt98/til/blob/main/install-archlinux.md"
|
|
|
|
>guide</a
|
|
|
|
>
|
|
|
|
to quickly capture what I need to do. I back up all my dotfiles in GitHub
|
|
|
|
and GitLab as I trust them both. Also as I travel the Internet, I discover
|
|
|
|
<a href="https://codeberg.org/" rel="nofollow">Codeberg</a> and
|
|
|
|
<a href="https://gitea.treehouse.systems/" rel="nofollow">Treehouse</a>
|
|
|
|
and use them as another backup for git repo.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
So that is my dotfiles, for my regular data, like Wallpaper or Books,
|
|
|
|
Images, I use Google Drive (Actually I pay for it). But the step: open the
|
|
|
|
webpage, click the upload button and choose files seems boring and
|
|
|
|
time-consuming. So I use Rclone, it supports Google Drive, One Drive and
|
|
|
|
many providers but I only use Google Drive for now. The commands are
|
|
|
|
simple:
|
|
|
|
</p>
|
|
|
|
<div class="highlight highlight-source-shell">
|
|
|
|
<pre><span class="pl-c"><span class="pl-c">#</span> Sync from local to remote</span>
|
2022-07-10 11:09:42 +00:00
|
|
|
rclone sync MyBooks remote:MyBooks -P --exclude .DS_Store
|
|
|
|
|
2022-12-25 19:13:58 +00:00
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Sync from remote to local</span>
|
2022-12-30 09:26:06 +00:00
|
|
|
rclone sync remote:MyBooks MyBooks -P --exclude .DS_Store</pre>
|
|
|
|
</div>
|
|
|
|
<p>
|
|
|
|
Before you use Rclone to sync to Google Drive, you should read
|
|
|
|
<a href="https://rclone.org/drive/" rel="nofollow"
|
|
|
|
>Google Drive rclone configuration</a
|
|
|
|
>
|
|
|
|
first.
|
|
|
|
</p>
|
|
|
|
<p>For private data, I use restic which can be used with Rclone:</p>
|
|
|
|
<div class="highlight highlight-source-shell">
|
|
|
|
<pre><span class="pl-c"><span class="pl-c">#</span> Init</span>
|
2022-09-07 14:13:47 +00:00
|
|
|
restic -r rclone:remote:PrivateData init
|
|
|
|
|
2022-12-25 19:13:58 +00:00
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Backup</span>
|
2022-09-07 14:13:47 +00:00
|
|
|
restic -r rclone:remote:PrivateData backup PrivateData
|
2022-11-21 07:13:27 +00:00
|
|
|
|
2022-12-25 19:13:58 +00:00
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Cleanup old backups</span>
|
2022-11-21 07:13:27 +00:00
|
|
|
restic -r rclone:remote:PrivateData forget --keep-last 1 --prune
|
2022-12-03 07:43:46 +00:00
|
|
|
|
2022-12-25 19:13:58 +00:00
|
|
|
<span class="pl-c"><span class="pl-c">#</span> Restore</span>
|
2022-12-30 09:26:06 +00:00
|
|
|
restic -r rclone:remote:PrivateData restore latest --target <span class="pl-k">~</span></pre>
|
|
|
|
</div>
|
|
|
|
<p>
|
|
|
|
The next data is my passwords and my OTPs. These are the things which I'm
|
|
|
|
scare to lose the most. First thing first, I enable 2-Step Verification
|
|
|
|
for all of my important accounts, should use both OTP and phone method.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
I use Bitwarden for passwords (That is a long story, coming from Google
|
|
|
|
Password manager to Firefox Lockwise and then settle down with Bitwarden)
|
|
|
|
and Aegis for OTPs. The reason I choose Aegis, not Authy (I use Authy for
|
|
|
|
so long but Aegis is definitely better) is because Aegis allows me to
|
|
|
|
extract all the OTPs to a single file (Can be encrypted), which I use to
|
|
|
|
transfer or backup easily.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
As long as Bitwarden provides free passwords stored, I use all of its
|
|
|
|
apps, extensions so that I can easily sync passwords between laptops and
|
|
|
|
phones. The thing I need to remember is the master password of Bitwarden
|
|
|
|
in my head.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
With Aegis, I export the data, then sync it to Google Drive, also store it
|
|
|
|
locally in my phone.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
The main problem here is the OTP, I can not store all of my OTPs in the
|
|
|
|
cloud completely. Because if I want to access my OTPs in the cloud, I
|
|
|
|
should log in, and then input my OTP, this is a circle, my friends.
|
|
|
|
</p>
|
|
|
|
<h2>
|
|
|
|
<a
|
|
|
|
id="user-content-recovery-strategy"
|
|
|
|
class="anchor"
|
|
|
|
aria-hidden="true"
|
|
|
|
href="#recovery-strategy"
|
|
|
|
><span aria-hidden="true" class="octicon octicon-link"></span></a
|
|
|
|
>Recovery strategy
|
|
|
|
</h2>
|
|
|
|
<p>
|
|
|
|
There are many strategies that I process to react as if something strange
|
|
|
|
is happening to my devices.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
If I lost my laptops, single laptop or all, do not panic as long as I have
|
|
|
|
my phones. The OTPs are in there, the passwords are in Bitwarden cloud,
|
|
|
|
other data is in Google Drive so nothing is lost here.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
If I lost my phone, but not my laptops, I use the OTPs which are stored
|
|
|
|
locally in my laptops.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
In the worst situation, I lost everything, my laptops, my phone. The first
|
|
|
|
step is to recover my SIM, then log in to Google account using the
|
|
|
|
password and SMS OTP. After that, log in to Bitwarden account using the
|
|
|
|
master password and OTP from Gmail, which I open previously.
|
|
|
|
</p>
|
|
|
|
<h2>
|
|
|
|
<a
|
|
|
|
id="user-content-the-end"
|
|
|
|
class="anchor"
|
|
|
|
aria-hidden="true"
|
|
|
|
href="#the-end"
|
|
|
|
><span aria-hidden="true" class="octicon octicon-link"></span></a
|
|
|
|
>The end
|
|
|
|
</h2>
|
|
|
|
<p>This guide will be updated regularly I promise.</p>
|
2022-12-25 19:13:58 +00:00
|
|
|
|
2022-12-25 19:22:39 +00:00
|
|
|
<div>
|
|
|
|
Feel free to ask me via
|
|
|
|
<a href="mailto:hauvipapro+posts@gmail.com">email</a> or
|
2022-12-30 09:55:38 +00:00
|
|
|
<a rel="me" href="https://hachyderm.io/@haunguyen">Mastodon</a>. Source
|
|
|
|
code is available on
|
|
|
|
<a href="https://github.com/haunt98/posts-go">GitHub</a>
|
2022-12-25 19:22:39 +00:00
|
|
|
</div>
|
2022-12-25 19:13:58 +00:00
|
|
|
</body>
|
|
|
|
</html>
|