--- title: "HackMD 圖片大搬遷,9 百萬張圖片備份大解密!" tags: zh, description: "HackMD 是如何在短時間內處理完這麼大量的筆記內容呢?" image: author: ann summary: | "Imgur 圖片約有九百萬張,轉移的資料為 1.8TB,這些圖片遍佈在 127 萬份筆記中,在這次處理時我們做得相當周全,無論是什麼時候上傳的圖片都會進行轉移,每一位使用者都可以在筆記的 setting 頁面看到自己總共有幾張圖片已經完成轉移。" date: "2023-05-19" --- # HackMD 圖片大搬遷,9 百萬張 Imgur 圖片備份大解密! 相信 HackMD 使用者這幾天應該都有收到我們寄出的轉移完成通知吧? 日前 Imgur 官方宣佈,於 2023 年 5 月 15 日起採用更新版本的服務條款,其中與 HackMD 最為相關的部分為「Imgur 非註冊用戶上傳的低流量圖片、未被他人使用的舊圖也將陸續遭到刪除」,這項政策可能會連帶影響上傳 Imgur 圖像的 HackMD 免費用戶。 HackMD 一直以來都相當重視用戶隱私及使用權益,所以開發團隊決定在最短的時間內將所有使用者上傳至 Imgur 的圖片全數轉移至 HackMD 的雲端空間,確保每位用戶的權益不會因為 Imgur 的更動而影響到原本的筆記內容。 **簡而言之,5/15 以後、如果 Imgur 開始大量刪除圖片,HackMD 付費用戶的筆記不會受到任何影響,仍會正常顯示圖片。** Imgur 釋出消息後,同時我們也收到來自四面八方的訊息,社群平台上的討論尤其熱烈,礙於先前人力及時間有限無法一一回應大家的提問,現在就由小編和技術長 Max 與大家分享我們的處理流程吧! ## 目標:「0 影響」! 「Imgur之亂」似乎完全沒有影響到你的筆記,正是因為我們在 2 週內將所有使用者的圖片全部都轉移完成啦! - **小編 : HackMD 是如何在短時間內處理完這麼大量的筆記內容呢?** - ==Max== : HackMD 是一個編制相當精緻的團隊,除了日常維護工作外還有許多新項目正在進行,面對突然出現的挑戰,我們必須非常快速的釐清問題大小,以下是我列出本次的處理步驟,與大家分享: - 清查系統中有用到 Imgur 上傳的部分 - 筆記中上傳的圖片 - 使用者上傳的 avatar - 團隊空間的 logo - 統計需要處理的圖片數量 - 定位到相關的實作程式碼,並找到熟悉該工作的工程師討論 - 分成多階段進行 1. 先將筆記中的圖片與關聯抽出來 2. 逐筆進行圖片轉移到 HackMD 的圖片空間 3. 讓全站使用者都使用 HackMD 的圖片空間,避免未來又遇到需要轉移的狀況 4. 讓付費使用者享有圖片網址自動轉換 5. 通知曾經有在 HackMD 上傳圖片到 Imgur 的使用者已經轉移完成 - **小編 :實際施作上有遇到什麼困難嗎?** - ==Max== : 首先,統計圖片和筆記的數量時我們就已經知道會是有點複雜的工作了,這次需要處理的Imgur 圖片約有九百萬張,轉移的資料為 1.8TB,這些圖片遍佈在 127 萬份筆記中,分別屬於 15 萬個用戶以及約一萬個團隊,要如何在不變更筆記內容的狀況下轉移圖片是非常大的挑戰和困難。 - **小編 : 是如何順利解決的呢?** - ==Max== : 我們有想過如果讓免費使用者繼續維持用 Imgur,或是轉用其他服務,未來還是有可能會遇到相同要轉移的狀況,為了保障使用者的隱私,這次決定讓所有使用者都能用到 HackMD 的圖片空間,強化隱私並一勞永逸。不過如此大量的圖片,原訂是需要耗費一週才能轉移完成,經過討論我們決定透過並行的方式批次處理,本次使用 AWS Lambda 同時最多跑 15 個 jobs,每秒可以備份約 50~100 張,最後花了三天才轉移完成。 - **小編 : 有一些使用者建議我們推付費方案轉移,為什麼最後選擇直接進行轉移呢?** - ==Max== : 我們一直都以維護「每一位」用戶的使用權益為原則,我們無法預期使用者何時會付費也不知道 Imgur 會移除哪些圖片,有很多免費的使用者長期公開分享很多有價值的內容,因此希望所有筆記中的圖片都不會遺失(當然不包含違法使用的小部分),在這次處理時我們做得相當周全,無論是什麼時候上傳的圖片都會進行轉移,每一位使用者都可以在筆記的筆記設定(Settings → Notes)頁面看到自己總共有幾張圖片已經完成轉移。 ++如下:進入個人筆記頁面左下角點選 ⚙ Settings ➤ 側邊欄點選 Notes++ ![](https://hackmd.io/_uploads/HkBVOy4Bh.png) ## 感謝使用者們的支持與愛護 ♡ HackMD 以開發者為本,我們非常喜歡使用者之間在社群上討論解法的互動方式,透過大家的互動我們也感受到許多溫暖,在轉移的消息公布後有許多使用者轉換付費以行動支持我們,原來團隊長期默默耕耘是有被看見的(拭淚),希望我們的努力有回應到大家的討論和期待。 為了提升使用者體驗,團隊從去年開始如火如荼的進行許多功能更新和調整,也陸續的訪談許多國際工作團隊,近一步了解用戶協作的需求。預計於今年下半年推出新版的 HackMD,有興趣的朋友可以透過 [Preview features](https://hackmd.io/settings#preview-features) 一窺新介面。 當然,Beta功能都尚在開發和不斷地測試中,有問題也歡迎透過 support@hackmd.io 回饋完整的建議給我們。 ### HackMD 的 Discord 來了 同時我們也新設立官方 Discord 伺服器。<small>對!沒錯!我們終於跟上 Discord 了!🎉</small> 👉👉👉 [點此加入](https://discord.gg/qTvkp6vdKV) 這是一個嶄新的交流空間,目前試營運中,日後我們也會將 HackMD 的第一手資訊公告在頻道上,也讓各位關心、好奇 HackMD 的朋友,直接與團隊互動。 未來我們會在頻道上進行有趣活動,與你一起塑造屬於 HackMD 的社群文化。期待每一個你!