成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

樹莓派自建NAS云盤之——數據自動備份

系統 Linux
本文是此系列的第二篇文章,我們將探討數據自動備份。數據自動備份保證了數據的安全,為硬件損壞后的數據恢復提供便利以及減少了文件誤操作帶來的不必要的麻煩。

[[246037]]

把你的樹莓派變成數據的安全之所。

在《樹莓派自建 NAS 云盤》系列的 ***篇 文章中,我們討論了建立 NAS 的一些基本步驟,添加了兩塊 1TB 的存儲硬盤驅動(一個用于數據存儲,一個用于數據備份),并且通過網絡文件系統(NFS)將數據存儲盤掛載到遠程終端上。本文是此系列的第二篇文章,我們將探討數據自動備份。數據自動備份保證了數據的安全,為硬件損壞后的數據恢復提供便利以及減少了文件誤操作帶來的不必要的麻煩。

備份策略

我們就從為小型 NAS 構想一個備份策略著手開始吧。我建議每天有時間節點、有計劃的去備份數據,以防止干擾到我們正常的訪問 NAS,比如備份時間點避開正在訪問 NAS 并寫入文件的時間點。舉個例子,你可以每天凌晨 2 點去進行數據備份。

另外,你還得決定每天的備份需要被保留的時間長短,因為如果沒有時間限制,存儲空間很快就會被用完。一般每天的備份保留一周便可以,如果數據出了問題,你便可以很方便的從備份中恢復出來原數據。但是如果需要恢復數據到更久之前怎么辦?可以將每周一的備份文件保留一個月、每個月的備份保留更長時間。讓我們把每月的備份保留一年時間,每一年的備份保留更長時間、例如五年。

這樣,五年內在備份盤上產生大量備份:

  • 每周 7 個日備份
  • 每月 4 個周備份
  • 每年 12 個月備份
  • 每五年 5 個年備份

你應該還記得,我們搭建的備份盤和數據盤大小相同(每個 1 TB)。如何將不止 10 個 1TB 數據的備份從數據盤存放到只有 1TB 大小的備份盤呢?如果你創建的是完整備份,這顯然不可能。因此,你需要創建增量備份,它是每一份備份都基于上一份備份數據而創建的。增量備份方式不會每隔一天就成倍的去占用存儲空間,它每天只會增加一點占用空間。

以下是我的情況:我的 NAS 自 2016 年 8 月開始運行,備份盤上有 20 個備份。目前,我在數據盤上存儲了 406GB 的文件。我的備份盤用了 726GB。當然,備份盤空間使用率在很大程度上取決于數據的更改頻率,但正如你所看到的,增量備份不會占用 20 個完整備份所需的空間。然而,隨著時間的推移,1TB 空間也可能不足以進行備份。一旦數據增長接近 1TB 限制(或任何備份盤容量),應該選擇更大的備份盤空間并將數據移動轉移過去。

利用 rsync 進行數據備份

利用 rsync 命令行工具可以生成完整備份。

  1. pi@raspberrypi:~ $ rsync -a /nas/data/ /nas/backup/2018-08-01

這段命令將掛載在 /nas/data/ 目錄下的數據盤中的數據進行了完整的復制備份。備份文件保存在 /nas/backup/2018-08-01 目錄下。-a 參數是以歸檔模式進行備份,這將會備份所有的元數據,例如文件的修改日期、權限、擁有者以及軟連接文件。

現在,你已經在 8 月 1 日創建了完整的初始備份,你將在 8 月 2 日創建***個增量備份。

  1. pi@raspberrypi:~ $ rsync -a --link-dest /nas/backup/2018-08-01/ /nas/data/ /nas/backup/2018-08-02

上面這行代碼又創建了一個關于 /nas/data 目錄中數據的備份。備份路徑是 /nas/backup/2018-08-02。這里的參數 --link-dest 指定了一個備份文件所在的路徑。這樣,這次備份會與 /nas/backup/2018-08-01 的備份進行比對,只備份已經修改過的文件,未做修改的文件將不會被復制,而是創建一個到上一個備份文件中它們的硬鏈接。

使用備份文件中的硬鏈接文件時,你一般不會注意到硬鏈接和初始拷貝之間的差別。它們表現的完全一樣,如果刪除其中一個硬鏈接或者文件,其他的依舊存在。你可以把它們看做是同一個文件的兩個不同入口。下面就是一個例子:

左側框是在進行了第二次備份后的原數據狀態。中間的方塊是昨天的備份。昨天的備份中只有圖片 file1.jpg 并沒有 file2.txt 。右側的框反映了今天的增量備份。增量備份命令創建昨天不存在的 file2.txt。由于 file1.jpg 自昨天以來沒有被修改,所以今天創建了一個硬鏈接,它不會額外占用磁盤上的空間。

自動化備份

你肯定也不想每天凌晨去輸入命令進行數據備份吧。你可以創建一個任務定時去調用下面的腳本讓它自動化備份。

  1. #!/bin/bash
  2.  
  3. TODAY=$(date +%Y-%m-%d)
  4. DATADIR=/nas/data/
  5. BACKUPDIR=/nas/backup/
  6. SCRIPTDIR=/nas/data/backup_scripts
  7. LASTDAYPATH=${BACKUPDIR}/$(ls ${BACKUPDIR} | tail -n 1)
  8. TODAYPATH=${BACKUPDIR}/${TODAY}
  9. if [[ ! -e ${TODAYPATH} ]]; then
  10. mkdir -p ${TODAYPATH}
  11. fi
  12.  
  13. rsync -a --link-dest ${LASTDAYPATH} ${DATADIR} ${TODAYPATH} $@
  14.  
  15. ${SCRIPTDIR}/deleteOldBackups.sh

***段代碼指定了數據路徑、備份路徑、腳本路徑以及昨天和今天的備份路徑。第二段代碼調用 rsync 命令。***一段代碼執行 deleteOldBackups.sh 腳本,它會清除一些過期的沒有必要的備份數據。如果不想頻繁的調用 deleteOldBackups.sh,你也可以手動去執行它。

下面是今天討論的備份策略的一個簡單完整的示例腳本。

  1. #!/bin/bash
  2. BACKUPDIR=/nas/backup/
  3.  
  4. function listYearlyBackups() {
  5. for i in 0 1 2 3 4 5
  6. do ls ${BACKUPDIR} | egrep "$(date +%Y -d "${i} year ago")-[0-9]{2}-[0-9]{2}" | sort -u | head -n 1
  7. done
  8. }
  9.  
  10. function listMonthlyBackups() {
  11. for i in 0 1 2 3 4 5 6 7 8 9 10 11 12
  12. do ls ${BACKUPDIR} | egrep "$(date +%Y-%m -d "${i} month ago")-[0-9]{2}" | sort -u | head -n 1
  13. done
  14. }
  15.  
  16. function listWeeklyBackups() {
  17. for i in 0 1 2 3 4
  18. do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "last monday -${i} weeks")"
  19. done
  20. }
  21.  
  22. function listDailyBackups() {
  23. for i in 0 1 2 3 4 5 6
  24. do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "-${i} day")"
  25. done
  26. }
  27.  
  28. function getAllBackups() {
  29. listYearlyBackups
  30. listMonthlyBackups
  31. listWeeklyBackups
  32. listDailyBackups
  33. }
  34.  
  35. function listUniqueBackups() {
  36. getAllBackups | sort -u
  37. }
  38.  
  39. function listBackupsToDelete() {
  40. ls ${BACKUPDIR} | grep -v -e "$(echo -n $(listUniqueBackups) |sed "s/ /\\\|/g")"
  41. }
  42.  
  43. cd ${BACKUPDIR}
  44. listBackupsToDelete | while read file_to_delete; do
  45. rm -rf ${file_to_delete}
  46. done

這段腳本會首先根據你的備份策略列出所有需要保存的備份文件,然后它會刪除那些再也不需要了的備份目錄。

下面創建一個定時任務去執行上面這段代碼。以 root 用戶權限打開 crontab -e,輸入以下這段命令,它將會創建一個每天凌晨 2 點去執行 /nas/data/backup_scripts/daily.sh 的定時任務。

  1. 0 2 * * * /nas/data/backup_scripts/daily.sh

有關創建定時任務請參考 cron 創建定時任務

  • 當沒有備份任務時,卸載你的備份盤或者將它掛載為只讀盤;
  • 利用遠程服務器作為你的備份盤,這樣就可以通過互聯網同步數據

你也可用下面的方法來加強你的備份策略,以防止備份數據的誤刪除或者被破壞:

本文中備份策略示例是備份一些我覺得有價值的數據,你也可以根據個人需求去修改這些策略。

我將會在 《樹莓派自建 NAS 云盤》 系列的第三篇文章中討論 Nextcloud。Nextcloud 提供了更方便的方式去訪問 NAS 云盤上的數據并且它還提供了離線操作,你還可以在客戶端中同步你的數據。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-10-18 10:30:50

樹莓派NAS數據庫

2018-10-12 11:20:20

樹莓派NAS Linux

2017-06-13 09:53:44

NAS磁盤

2019-03-31 08:00:02

樹莓派更新樹莓派 Linux

2019-03-24 20:30:18

樹莓派Linux

2019-03-12 18:33:57

樹莓派Linux

2016-09-19 19:32:55

2021-03-29 21:24:40

樹莓派Linux

2022-02-11 09:24:05

樹莓派OpenWrt固定IP服務

2019-03-23 19:33:14

樹莓派Linux操作系統

2019-05-24 13:30:57

PiShrink樹莓派Linux

2021-07-25 10:30:04

樹莓派Linux

2024-03-22 15:28:36

樹莓派Linux

2020-07-16 21:00:05

樹莓派Kubernetes集Linux

2019-03-28 18:51:52

樹莓派Linux編程語言

2021-01-18 09:08:44

樹莓派Ceph開源

2020-07-25 09:00:12

樹莓派WiFi相框Linux

2023-06-08 17:20:37

Lua樹莓派

2021-06-15 15:00:08

Cockpit樹莓派Linux

2020-08-16 09:00:15

樹莓派FedoraLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费成人av | 亚洲一区二区三区四区五区午夜 | 久久免费精品视频 | 本地毛片 | 91色视频在线观看 | 日韩中文字幕在线观看视频 | 久久中文网 | 免费国产一区二区 | 国产极品粉嫩美女呻吟在线看人 | 精品99在线 | 色综合视频 | 天天爽夜夜操 | 日韩欧美国产精品一区二区三区 | 国产一区不卡 | 91色综合| 男女网站免费观看 | 日韩欧美二区 | 天天天插 | 操久久| 精品中文视频 | 成人精品鲁一区一区二区 | 久久久久久av | 综合二区| 日韩欧美在线一区 | 亚洲成av人影片在线观看 | 91视频网 | 日韩精品在线免费观看视频 | 在线观看不卡av | 久久久久国产一区二区三区四区 | 欧美1区| 欧洲亚洲精品久久久久 | av天天澡天天爽天天av | 青青久久| 国产一区亚洲 | japan25hdxxxx日本| 免费av电影网站 | 在线观看黄色电影 | 欧美精品欧美精品系列 | av永久| 久久综合久久久 | 中文字幕免费视频 |