Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

資料備份

完美很好,但有必要嗎?

確定隨身碟有足夠空間

自從建了samba,有nas私有雲就考慮到備份重要性,但手邊只有一個隨身硬碟與一個隨身碟,不能將隨身碟內資料全放到隨身碟做到raid 1,但我還有重生的老電腦,它的硬碟容量應該夠備份最重要的資料夾了。

確立掛載點

隨身硬碟掛載點:/mnt/BE11-30B3
隨身碟掛載點:/mnt/3679-1DF8
你要同步的資料夾(在硬碟上):/mnt/BE11-30B3/hddshare
目標資料夾(在隨身碟上):/mnt/3679-1DF8/usbshare

掛載Samba共享資料夾到本地目錄

1
2
sudo apt update  
sudo apt install cifs-utils

查看Samba資料夾(會提示輸入密碼)

1
smbclient -L //ip address -U USER_NAME

手動掛載Samba共享資料夾

1
2
sudo mkdir -p /mnt/samba_share  
sudo mount -t cifs //ip address/hddshare/memories /mnt/samba_share -o username=USER_NAME,password=PWD,iocharset=utf8,file_mode=0777,dir_mode=0777

rsync同步掛載後資料夾memories至本地 (rsync 再執行一次就增量更新)

1
2
mkdir -p ~/backup_memories
rsync -av /mnt/samba_share/memories/ ~/backup_memories/

參數說明
-a:archive 模式,會遞迴、保留權限、符號連結等
-v:verbose,顯示詳細資訊
-h:human-readable,讓檔案大小容易看懂
-z:compress,在資料傳輸時對資料進行壓縮,減少透過網路傳輸的資料量
注意路徑後面有斜線 /,這會影響 rsync 的行為
/mnt/hdd/my_folder/ 是同步「裡面的內容」
/mnt/hdd/my_folder 是同步「整個資料夾」本身

若要定期同步

可以建立一個 cron 任務,每月1日同步一次

1
2
3
4
5
6
7
8
9
10
11
12
crontab -e
0 0 1 * * rsync -av /mnt/samba_share/memories/ ~/backup_memories/

> 分 時 日 月 星期
0 0 1 * *
每個月的 1 號凌晨 00:00執行一次資料夾同步
``

# 設定開機同步

## 建立 rsync service

sudo nano /etc/systemd/system/rsync-backup.service
[Unit]
Description=One-time Rsync Backup on Boot
After=network-online.target mnt-samba_share.mount
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/rsync -av /mnt/samba_share/memories/ /home/$USER/backup_memories/

1
2
3
4
5
6
7
8

* 如果掛載名稱不是 mnt-samba_share.mount

> 執行systemctl list-units | grep mnt
替換 service 內的 After=... 即可

# 建立 timer — 開機後延遲 60 秒執行一次

sudo nano /etc/systemd/system/rsync-backup.timer
[Unit]
Description=Run Rsync Backup Once At Boot

[Timer]
OnBootSec=1min
AccuracySec=10s
Unit=rsync-backup.service

[Install]
WantedBy=timers.target

1
2

## 啟用並測試

sudo systemctl daemon-reload
sudo systemctl enable –now rsync-backup.timer

查看systemctl list-timers | grep rsync


# 反思
原本想將本地隨身硬碟的資料夾同步到雲端,也考慮過用事件驅動方式( 當有本地有新檔案增加時要同步到雲端硬碟),選好方案後再次回顧想達成的,除了設定繁雜,維護成本也增加,但壓垮駱駝最後一根稻草是考慮到本地硬碟親友合照上雲給他人託管就是種風險,最後才演變成這個修改後的方案,這也讓我意識到[過度設計](https://temberature.github.io/post/1a9_MXf8S/) 的迷思,先想個堪用的方案再逐步修正或許才是最理想的,這也是我智慧居家系統的宗旨呢。

# 回顧RAID
* RAID 0:資料分條(striping),效能提升明顯,但不具容錯能力,一顆硬碟壞掉會導致全部資料遺失。
* RAID 1:資料鏡像,所有資料完全複製到兩顆硬碟,提升容錯能力,一顆硬碟壞掉資料不會遺失,但容量利用率為50%。
* RAID 5:至少三顆硬碟,使用資料分條與奇偶校驗(parity),能容許一顆硬碟故障且資料不遺失,兼顧效能與容錯,但寫入速度較慢。
* RAID 6:類似RAID 5,但可容許兩顆硬碟同時故障,資料更安全。
* RAID 10(RAID 1+0):先做鏡像,再做分條,兼具效能與高容錯,需至少四顆硬碟。


如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels