AWS S3 刪除大量檔案

AWS S3 Bucket Lifecycle Permanently Delete

由於早期的專案有段時間是拿 AWS S3 來存放 access log,而且當初的設計是一筆 request 就會有一筆 log,導致 S3 裡面放了超多的細碎檔案,每個月單就儲存的費用就頗驚人,每個檔案又小於 256KB,如果到 Lifecycle 裡面設定 Archive to the Glacier Storage Class,AWS 會提示檔案太小放到 Glacier 可能費用會更高。

AWS S3 Glacier Transitioning Smaller Objects to Glacier May Increase Costs

最後只好把這一大批檔案備份出來後(又是另一筆費用),刪掉比較舊的,只保留某個時間點之後的檔案,但由於不是要整個 bucket 刪掉,且 bucket 裡面每個目錄都超過 20000 個檔案,從 AWS Console 裡面刪除時會跳提示說檔案太多請從 cli 刪除,試著透過
aws s3 rm s3://xxx --recursive
的方式來刪除檔案,aws cli 會一個個檔案慢慢刪,將近一億個檔案不知道要刪除到何年何月…

由於這些檔案具有時序特性,S3 又提供 Permanently Delete – N Days after the object’s creation date 的選項,就想到可以透過這個方式來刪除舊檔案,保留新的檔案,只要算好要清除的檔案是在多少天之前,設定進去,時間到後檔案舊檔案就會全部消失囉!

AWS S3 Bucket Lifecycle Permanently Delete

不知道有沒有更好的方法… XD

[Ansible] 將 public key 加入 known hosts

SSH RSA key fingerprint

在使用 Ansible 部署時,常常會需要使用到 git clone 或 scp 等方式,透過 ssh 去另一台主機抓取專案程式碼或檔案,平常如果是手動在一台全新的機器第一次使用 ssh 連線,通常會跳出詢問對話:

$ git clone git@github.com:SarsTW/Learn-Git-in-30-days.git
Cloning into 'Learn-Git-in-30-days'...
The authenticity of host 'github.com (192.30.252.120)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

Synology NAS RAID 6 保護能力

2 disks failed

前陣子在 Synology NAS 借測機上建立了 RAID 6,測試完之後,將整組硬碟拿掉兩顆後,剩下硬碟全數直接裝入新機器中,透過 http://find.synology.com 找到新 NAS 並重新安裝 DSM 後,整組 RAID 6 會直接出現在 DSM 的磁碟群組內,雖然少了兩顆硬碟,整組 RAID 還能讀寫,Synology 也會評定 RAID 處於「堪用」狀態,當好驗證了 RAID 6 具備兩顆硬碟失效的資料保護,不過還是要儘快更換硬碟並進行 RAID 修復就是了。

防禦性程式設計(defensive programming)與安全程式設計(secure programming)

Defensive

找資料的時候剛好看到這篇:What is the different between if (‘value’ == $var) and if ($var == ‘value’) in PHP?

if ('value' === $var)

if ($var === 'value')

主要在問說上面兩個 PHP 的判斷式裡面,將常數與變數分別放在三個(或兩個)等號的前或後的差別:

申請 Azure Files 並透過 NFS 在 Ubuntu Linux 上掛載儲存體

Azure Files Preview

目前 Azure 的儲存體只能透過指定的 Blobs、Tables 或 Queues 方式存取,但是這些方式在 Linux 上無法以慣用的掛載(mount)方式將儲存體拿來使用,只能在虛擬機器上,透過連接磁碟的方式,建立一個虛擬硬碟,接著再自行分割、格式化,缺點就是這個虛擬硬碟是跟著某一台虛擬機器上,如果要跟虛擬機器共用,需要自己架設 NFS 等方式共用,而且單一虛擬硬碟的最大空間限制在 1TB 以下,稍嫌不足。