樹莓派自建 NAS 雲盤之——數據自動備份 | Linux 中國

2022-01-04 Linux中國

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

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

備份策略

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

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

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

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

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

利用 rsync 進行數據備份

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

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

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

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

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 自昨天以來沒有被修改,所以今天創建了一個硬連結,它不會額外佔用磁碟上的空間。

自動化備份

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

#!/bin/bash

TODAY=$(date +%Y-%m-%d)

DATADIR=/nas/data/

BACKUPDIR=/nas/backup/

SCRIPTDIR=/nas/data/backup_scripts

LASTDAYPATH=${BACKUPDIR}/$(ls ${BACKUPDIR} | tail -n 1)

TODAYPATH=${BACKUPDIR}/${TODAY}

if [[ ! -e ${TODAYPATH} ]]; then

       mkdir -p ${TODAYPATH}

fi

rsync -a --link-dest ${LASTDAYPATH} ${DATADIR} ${TODAYPATH} $@

${SCRIPTDIR}/deleteOldBackups.sh

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

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

#!/bin/bash

BACKUPDIR=/nas/backup/

function listYearlyBackups() {

       for i in 0 1 2 3 4 5

               do ls ${BACKUPDIR} | egrep "$(date +%Y -d "${i} year ago")-[0-9]{2}-[0-9]{2}" | sort -u | head -n 1

       done

}

function listMonthlyBackups() {

       for i in 0 1 2 3 4 5 6 7 8 9 10 11 12

               do ls ${BACKUPDIR} | egrep "$(date +%Y-%m -d "${i} month ago")-[0-9]{2}" | sort -u | head -n 1

       done

}

function listWeeklyBackups() {

       for i in 0 1 2 3 4

               do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "last monday -${i} weeks")"

       done

}

function listDailyBackups() {

       for i in 0 1 2 3 4 5 6

               do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "-${i} day")"

       done

}

function getAllBackups() {

       listYearlyBackups

       listMonthlyBackups

       listWeeklyBackups

       listDailyBackups

}

function listUniqueBackups() {

       getAllBackups | sort -u

}

function listBackupsToDelete() {

       ls ${BACKUPDIR} | grep -v -e "$(echo -n $(listUniqueBackups) |sed "s/ /\\\|/g")"

}

cd ${BACKUPDIR}

listBackupsToDelete | while read file_to_delete; do

       rm -rf ${file_to_delete}

done

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

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

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

有關創建定時任務請參考 cron 創建定時任務[2]。

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

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

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

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

via: https://opensource.com/article/18/8/automate-backups-raspberry-pi

作者:Manuel Dewald[5] 選題:lujun9972 譯者:jrg 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關焦點

  • 樹莓派自建 NAS 雲盤之——樹莓派搭建網絡存儲盤 | Linux 中國
    我將在接下來的這三篇文章中講述如何搭建一個簡便、實用的 NAS 雲盤系統。我在這個中心化的存儲系統中存儲數據,並且讓它每晚都會自動的備份增量數據。本系列文章將利用 NFS 文件系統將磁碟掛載到同一網絡下的不同設備上,使用 Nextcloud[1] 來離線訪問數據、分享數據。本文主要講述將數據盤掛載到遠程設備上的軟硬體步驟。
  • 在樹莓派上用 Syncthing 自建私有雲盤
    自建的私有雲網盤軟體很多,比如 Seafile、ownCloud 等,功能很實用,而 Syncthing 最大的特色是採用了與 Resilio
  • [原創] 如何配置rclone用樹莓派備份到雲盤
    [原創] 如何配置rclone用樹莓派備份到雲盤前述用樹莓派做Joplin個人資料伺服器,重要資料一定要備份。
  • 利用樹莓派搭建 NAS( 網絡附加存儲)-家庭網盤
    然後一看我說樹莓派立馬就有人跳出來:  為什麼要用樹莓派做 NAS, 不用香蕉派, nanopi, orangepi, 各種 pi 呢? 我就喜歡樹莓派行不行?我就樹莓派用著順手行不行? 我就愛用樹莓派做東西行不行? 這個完全看個人喜好了啊,如果你喜歡,你用個臺式機,用個 arduino 去實現,也咩有人說你不是?
  • linux自動備份數據
    環境centos系統 64位  網站數據自動備份             1.新建一個backup.sh
  • 一塊神奇的樹莓派電子板竟讓我學會了Linux系統
    而供電方面第三代樹莓派則需要搭配2.5A的USB充電器。筆者體驗的是樹莓派B和B+這兩塊板,通過av或者HDMI可以將圖像輸出到任何顯示器上,接上滑鼠和鍵盤,一臺完整的電腦就誕生了。樹莓派簡而言之有這樣兩大玩法:一是作為控制中心實現各種"智能機器",在智能設備方面,我們可以通過樹莓派實現一臺Wifi小車、自製筆記本、智能開關、監控拍攝、甚至智慧機器人等。二是發揮其每一塊硬體的提供"軟"服務,在軟服務方面可以通過樹莓派搭建個人網站、作為網絡存儲設備、部署家庭相冊、提供WIFI熱點、站點監控儀等。
  • 樹莓派Raspberry Pi安裝NextCloud教程-自建家庭私有雲區域網共享
    由於樹莓派Raspberry Pi安裝的作業系統是經過修改過的Linux Debian,所以在測試時發現了不少的問題。本來在Linux上安裝NextCloud是一個非常簡單的事情,但是樹莓派Raspberry Pi文件權限問題、掛載移動硬碟、Linux與Windows硬碟格式問題等都是踩過的坑。
  • 用樹莓派製造一個像樣的 NAS
    我所看到的很多案例都是用木板粘接,集成度較低的方案,其散熱性和可靠性將受到影響,想想你多年珍藏的電影資源和重要數據可能因此而丟失,這是很難以接受的。因此我決定自己做一個真正的NAS方案,它不僅外觀上長得更像專業級的NAS,其內部核心部件也都是市面上買到的和專業NAS同等性能的部件。樹莓派僅作為一個低功耗的主機存在,來運行 NAS 作業系統。最初的設計草圖。
  • 《樹莓派4B家庭伺服器搭建指南》第四期:用樹莓派搭建公網個人下載平臺aria2-pro,推薦6個優質種子資源站
    zhaoolee就想搭個人下載站,趁著今年國慶時間充裕,zhaoolee把下載站搭建到了樹莓派上,並對公網開放;在任何地點,zhaoolee只需通過網頁提交下載任務,家中的樹莓派就會自動把zhaoolee需要的資源,日夜不間斷地下載到zhaoolee的硬碟裡~ 本文是詳細的搭建步驟, 文末提供6個風評極好的優質種子站~(本文是《樹莓派4B家庭伺服器搭建指南
  • 樹莓派使用入門:用樹莓派學 Linux | Linux 中國
    在本系列的 第三篇文章[1] 中開始了我們的樹莓派探索之旅,我分享了如何安裝 Raspbian,它是樹莓派的官方 Linux 版本。
  • 低成本打造宿舍 NAS
    現在這個時代,數據就是金錢,那麼 nas 就相當於一個保險柜(還是自動會幫你存錢的那種)。比如說我在用了這個 nas 之後,它每天會自動幫你備份電腦的數據文件夾,當你的手機連上 WiFi 後也會自動幫你備份照片和數據。外出拍照回來,把相機往 nas 上一插,就會自動備份照片並按日期建立文件夾。甚至還可以運用第三方應用成為下載機,自動下載電影。
  • 樹莓派 3 新手指南 | Linux 中國
    你需要:◈ 一個 5v 2mAh 帶 USB 接口的電源適配器◈ 一臺用於準備 microSD 卡的 Mac 或者 PC現在有很多基於 Linux 作業系統可用於樹莓派,你可以直接安裝它,但是,如果你是第一次接觸樹莓派,我推薦使用 NOOBS,它是樹莓派官方的作業系統安裝器,它安裝作業系統到該設備的過程非常簡單。
  • 用樹莓派搭建公網個人下載平臺aria2-pro,推薦6個優質種子資源站
    zhaoolee就想搭個人下載站,趁著今年國慶時間充裕,zhaoolee把下載站搭建到了樹莓派上,並對公網開放;在任何地點,zhaoolee只需通過網頁提交下載任務,家中的樹莓派就會自動把zhaoolee需要的資源,日夜不間斷地下載到zhaoolee的硬碟裡~ 本文是詳細的搭建步驟, 文末提供6個風評極好的優質種子站~(本文是《樹莓派4B家庭伺服器搭建指南
  • 樹莓派 Zero 2 W 來了! | Linux 中國
    https://linux.cn/article-13931-1.html作者:Ankush Das譯者:Xingyu.Wang樹莓派 Zero W 是最實惠的包括了無線和藍牙連接的單板計算機之一。雖然 樹莓派 Zero 與樹莓派 Zero W🔗 itsfoss.com 之間有一些區別,但考慮到它們分別以 5 美元和 10 美元的價格推出,兩者都是靠譜的選擇。現在,樹莓派在大約 6 年後推出了這個系列的繼任者,即樹莓派 Zero 2 W,售價為 $15。
  • 樹莓派 Zero 與 Zero W 對比 | Linux 中國
    https://linux.cn/article-13799-1.html作者:Ankush Das譯者:阿九樹莓派十年前憑藉 25 美元的迷你電腦掀起了一場革命。隨著時間的推移,樹莓派發布了許多變種。有些是對以前的型號進行升級,有些是為特定目的而製作的。
  • 樹莓派4 嵌入式Linux開發過程詳解
    樹莓派4 嵌入式Linux開發過程詳解1.概述2.開發環境概述3.交叉編譯工具的安裝與uboot的編譯3.1 安裝arm 64位交叉編譯環境3.2 編譯樹莓派上的uboot3.3 將u-boot放到樹莓派上運行4.樹莓派4b上的Linux
  • 手機備份咋解決?1塊硬碟、1個398元憶捷NAS,這樣最划算
    不少人選擇手機品牌提供的付費雲盤,其實還有另一種辦法,那就是自建一個"雲盤"給手機備份,順便它還能做一些別的事情,當然前提是你要有一塊閒置的機械硬碟,然後再花398元買一個憶捷NAS就可以了。說到nas,總會讓人想起一些專業的品牌,比如鐵威馬、群暉之類,產品高端價格也高端,其實對於普通消費者來說未必好用。
  • 【暢玩NAS】使用樹莓派打造一個NAS伺服器
    我相信很多朋友都玩過樹莓派,那麼是否考慮過將樹莓派打造成一個NAS伺服器
  • 玩轉樹莓派之零—-了解樹莓派
    最近買了一塊樹莓派板子,想學習樹莓派玩法,如果您也跟我有一樣想法,那麼我們一起來學習吧,需要什麼基礎呢:基礎計算機知識
  • 如何用樹莓派搭建簡單家用 NAS
    硬體:樹莓派 3B+(含 TF 卡)讀卡器固態硬碟 256GB綠聯 SATA 硬碟轉 USB 線帶供電的(如果是移動硬碟則不需要,我這裡用的是主機硬碟)軟體:SSH 客戶端(Mac 自帶 Terminal,Windows 可用 SSH Secure Shell Client 或 Putty)