Alan Moment
  • Introduction
  • 智慧家庭
    • Fibaro 系統整合便宜的 IP Cam
  • Life
    • 用AWS Glacier做最後的冷資料備份
    • 如何在macOS修改影音檔日期
  • 3D Printer
    • Atom2.5EX 之血淚組裝
    • 列印經驗紀錄
      • SpoolHolder
    • 製圖經驗
      • Turntable
      • 重製Atom3散熱風扇
    • 線材經驗
      • PETG
        • 首測
  • Kubernetes
    • 使用Kops建立Kubernetes
    • 使用HelmV2
    • Kubernetes的技術問題排解技巧
  • PHP
    • 管理PHP Library的利器Composer
    • PHP安裝JSON
    • Phalcon首發
    • Gearman Job Worker for PHP
    • Laravel 首發 !!!
    • Data Encrypt & Decrypt
  • Python
    • Django + Python 開發環境建置
  • Android
    • Android zipcode library of maven
    • Android use foreign object of OrmLite
    • ProgressBar while loading ListView of Android
    • AsyncTask download image by the Android
    • Use Thread control Android UI
    • Android Universal Image Loader
  • Ruby on Rails
    • Install rmagick on the Windows of Ruby on Rails
    • Ruby on Rails deploy on Heroku
    • Ruby on Rails 小問題
  • React
    • Ditched AngularJS for React
  • Tessel
    • 很潮的 Tessel
    • Connect to Slack on Tessel
    • Baby Help on Tessel
  • Node.js
    • CentOS 安装 Node.js 0.8.5
  • OOAD
    • Injection Principle Design Pattern
  • Linux
    • SSH免密碼登入遠端電腦
    • Apache與Tomcat的結合
    • The bash auto build
  • Hadoop
    • CentOS 5.5 + Hadoop 0.20
    • CentOS 5.5 + Hbase 0.94.8
    • Hadoop + Hbase 叢集環境
    • Hadoop 溝通橋梁之 Thrift 0.7
    • 使用MapReduce之替代方案Hive
    • 使用Sqoop將MySQL資料匯入Hbase
  • Database
    • 吃足苦頭的Mssql
  • IDE
    • Netbeans console中文亂碼解決方法
    • 用NetBeans開發Ruby On Rails
  • Agile
    • 淺談我的Agile
  • 協作工具
    • 建置專屬自己的Github之Gitlab
    • Gitlab 4.1 upgrade to Gitlab 6.0超偷懶方法
    • Install Phabricator and run on the Gitlab
    • Phabricator 基本應用
    • Phabricator review code應用
    • Redmine之基本建置與Scrum應用
    • Omnibus Gitlab 7 基礎操作
    • Git Push Notify to Slack on Gitlab
    • phabricator-extensions-Sprint 無法抓到正確的 Story Points
  • 其他
    • 慶祝Octopress開張
    • 走在時尚的尖端! Ghost
    • 大搬家
    • 網頁教學初體驗
    • 網路攻擊很猖狂
Powered by GitBook
On this page
  • 前言
  • 前置作業
  • 壓縮照片程式
  • 上傳請求數費用
  • 下載的容量費用
  • 固定儲存空間費用
  • Docker

Was this helpful?

  1. Life

用AWS Glacier做最後的冷資料備份

前言

從 2010 年開始就有拍照、錄影的習慣,這一路下來,累積了高達 2.4TB 以上的影音檔。而以前的備份方式超級簡易,就只是把照片匯入 Mac 系統的 照片 應用程式。因為我覺得這個程式設計得非常棒,讓我可以非常方便的管理影音檔。但就在踩了兩次坑之後,讓我下定決心要改變儲存方式!

過往的儲存方式是多年度一圖庫,到後來演變至一年度一圖庫(因為實在拍太多了一個圖庫超過 600 GB 鬼才有辦法維護)。但是這樣的大圖庫儲存方式,導致每次開啟圖庫瀏覽都非常的慢(當然也可能是因為我把圖庫放在 Apple Time Capsule)。所以中間改變作法,只用 照片 的匯出功能,因為這樣可以直接依照年、月、日來匯出影音檔,所以我近年的做法只是利用圖庫方便我執行匯入及匯出,主要瀏覽是透過 NAS。

但是隨著時間過去,MacOS 的更新已經導致我做過兩次圖庫的修復,這次更慘,在我更新完 Catalina 版本之後,已經無法開啟舊 MacOS 建立的圖庫了....這簡直就是悲劇。所以我決定重新審視我的儲存方案

前置作業

首先,需要有 MacOS、Synology NAS、AWS Glacier 這三種工具

以後的步驟則是:

拍照 > 依月份匯入 MacOS 的 照片 > 依月份匯出至 NAS > 執行月份資料夾的壓縮程式 > 上傳到 AWS Glacier

沒錯!就是這樣,冷熱資料都顧到了,遺失也不怕了

壓縮照片程式

其實前面三個步驟,拍照就不說了,匯入與匯出,縮小至一個月,就算有相容問題,檔案也不大,好解決。但是壓縮程式這邊就需要解釋一下了。因為 AWS Glacier 是按照幾個計費方式

  1. 上傳請求數費用

  2. 下載的容量費用

  3. 固定儲存空間費用

上傳請求數費用

呼叫一次 API 上傳 archive 檔案就累計 1 ,如果是放在東京,則計價是 0.0571 / 1000次,所以我覺得要做事前壓縮,才會省錢。

下載的容量費用

當冷資料需要從 AWS Glacier 下載,那就會被收這筆費用,而且是以 GB 計價,這也是其中的因素讓我想以月來儲存壓縮檔,這樣我才可以比較精確的知道我要拿哪個月份的冷資料

固定儲存空間費用

相對便宜,每 GB 0.005 USD/月

如果提前把存檔刪除,會被另外收一筆提前刪除的費用

以上都可以到 AWS 官網查看費用 https://aws.amazon.com/tw/glacier/pricing/

Docker

因為要跑程式,所以需要 container 來處理壓縮照片這件事,否則電腦都不用關機了,也因為有 NAS 所以相對好處理

選慣用的 ubuntu 來用

掛上資料夾

container 啟動之後不支援中文,要在 .bashrc 修改,然後重新啟動

export LC_ALL="C.UTF-8"

再來就是會寫程式的好處了,寫了一隻 ShellScript 來處理照片資料夾的壓縮工作,我不做大檔,也因為一些隱私關係,有密碼總比沒有密碼來的強。

#! /bin/bash

# 要處理的資料夾檔名
name=2014

# 這邊 source 與 target 會是 /mnt 是因為我把外面的 photos 掛在 container 裡面了
# 要壓縮的目錄
source="/mnt/${name}"
# 壓縮檔案存放路徑
target="/mnt/glacier"

cd $source

for d in `ls ${source} | grep ^20` ; do
  echo $d

  # 不是目錄就跳開
  [ -d $d ] || break;

  # 壓縮檔存放的路徑如果不存在則建立
  [ -d ${target}/${name} ] || mkdir -p ${target}/${name}

  # 排除一些不必要的檔案,也把密碼直接帶入指令
  zip -9 -q -r --exclude="Thumbs.db" --exclude="*@eaDir*" --exclude="*.DS_Store*" -P <PASSWORD> ${target}/$name/${d}.zip ${d}

  echo "done"
done

但是解壓縮之後所有的日期都會變成解壓縮當天的日期..令人匪夷所思,但總比整個不見來的好。

最後就在 Synology 設定定期備份就好

PreviousLifeNext如何在macOS修改影音檔日期

Last updated 3 years ago

Was this helpful?