---
# System prepended metadata

title: Backup your data

---

---
GA: G-44K4TH870N
---
> 理想的檔案備份是有雲端、有本地（Remote & Local），本地資料再分兩個地方保存。這樣可以預防大部分的情況，例如雲端服務出問題、或是本地遇到天災火災，至少都能確保其中一份資料的安全。


## 使用 Git + Github 備份程式
[**git**](https://git-scm.com/)是個本地（Local）的版本控制軟體，因此比較不適合追蹤大型檔案（例如圖片、原始資料等），推薦用來追蹤自己的程式，順便進行雲端備份。

如果你已經有一個使用中的專案資料夾，建議你用下面的流程來進行
1. 先在資料夾中git init初始化你的資料夾
2. 用add追蹤資料夾中你想要追蹤的檔案
3. commit將你的檔案紀錄

此時你的檔案已經在本地有一份追蹤紀錄，但遠端還沒有。因此你可以在遠端[**Github**](https://github.com/)上開一個空的repository，並用```git remote add```來連結本地和遠端的git進度。

接下來就可以用push和pull來更新repository的內容，如果你只是要單方面的備份資料，基本上只會用到commit跟push的部分，這邊不介紹多人協作或是控制多個分支的功能。


## 使用rsync把Linux伺服器上的資料備份到本地
rsync是一個備份檔案專用的指令，可以用於本地對本地或是遠端對本地的備份，而且會自動辨識並跳過相同（已經備份過）的檔案。但是它無法直接在windows上運行。我這邊選擇透過WSL （Windows Subsystem for Linu）來運行這個指令，並將伺服器上的檔案透過我的電腦備份到外接硬碟。

由於WSL可以透過掛載讀取外接硬碟，路徑應該會在/mnt底下的/e或是/f之類的。

```shell
rsync -avzh user@140.112.xx.xxx:/path/to/FolderOrFile /path/to/destination
```
接下來會跟SSH一樣跳出輸入密碼的地方，輸入完就會開始備份了。

> 跑之前可以先用 ```--dry-run``` 測試備份檔案路徑是否正確

