S3QL 是基於 FUSE 的雲端檔案系統,支援 Amazon S3、Google Cloud Storage、Rackspace CloudFiles、OpenStack 等後端,提供壓縮、加密、快照、去重、硬/軟連結等功能。資料本地壓縮加密後再上傳,下載時即時解密解壓。本文記錄 AWS S3 後端部署 S3QL 加密檔案系統、掛載、rsync 備份範例的完整流程。


# Debian/Ubuntu/Mint
sudo apt-get install s3ql
# Fedora
sudo yum install s3ql
# Arch Linux
yaourt -S s3ql # 或 AUR 手動安裝
mkdir -p ~/.s3ql
vi ~/.s3ql/authinfo2
# 格式:
[S3]
storage-url: s3://your-bucket-name
backend-login: YOUR_ACCESS_KEY_ID
backend-password: YOUR_SECRET_ACCESS_KEY
# 權限 600
chmod 600 ~/.s3ql/authinfo2
mkfs.s3ql --plain --cipher aes256 --compress lzma s3://your-bucket-name
# --plain: 不加密元資料(僅資料加密),較快
# --cipher: 加密演算法 (aes256, aes128, blowfish 等)
# --compress: 壓縮演算法 (lzma, zlib, bz2, none)
# 輸入加密密碼(兩次),此密碼掛載時需輸入
mkdir -p /mnt/s3ql
mount.s3ql s3://your-bucket-name /mnt/s3ql
# 輸入加密密碼
# 後台掛載:mount.s3ql --fg s3://bucket /mnt/s3ql &
rsync -avz --delete /path/to/source/ /mnt/s3ql/backup/
# 首次備份較慢(上傳),後續僅增量傳輸
# S3QL 會自動壓縮、加密、去重
# 卸載
umount.s3ql /mnt/s3ql
# 建立快照 (Copy-on-write,瞬間完成)
mount.s3ql s3://bucket /mnt/s3ql
s3qlcp --snapshot /mnt/s3ql/backup /mnt/s3ql/backup_snapshot_$(date +%F)
umount.s3ql /mnt/s3ql

~/.s3ql/cache 可設定大小上限 (--cachedir, --max-cache-entries)。fsck.s3ql 檢查完整性,異地複製關鍵資料。# Google Cloud Storage
storage-url: gs://your-bucket
backend-login: YOUR_CLIENT_ID
backend-password: YOUR_CLIENT_SECRET
# OpenStack Swift
storage-url: swift://your-container
backend-login: TENANT:USERNAME
backend-password: PASSWORD
# 需額外設定 auth-url 等參數