顯示具有 DigitalOcean 標籤的文章。 顯示所有文章
顯示具有 DigitalOcean 標籤的文章。 顯示所有文章

2020-10-31

在 Digitalocean Spaces 使用 s3cmd

在 Digitalocean Spaces 使用 s3cmd

上一篇 基本上是廢文。 s3fs 好用,但只適合用在檔案數不多的情況下操作,而且不適合搭配 rsync 一起使用。

檔案數多時(我的狀況是有數百萬個檔案要上傳,或同步),就應該使用 s3cmd。

s3cmd 安裝方式可以參考 Digitalocean 官方的說明 Setting Up s3cmd 2.x with DigitalOcean Spaces

s3cmd 基本用法也可以參考 Examples of s3cmd 2.x Usage with DigitalOcean Spaces。當然也可以用 s3cmd --help 查詢。

以下列出自己常用的部份:

# 上傳 my_path2 整個資料夾到 s3://my_bucket/my_path2,同時設定為 public s3cmd put --acl-public --recursive /my_path1/my_path2 s3://my_bucket/
# 同步 my_path2 資料夾到 s3://my_bucket/my_path2,同時設定為 public s3cmd sync --acl-public /my_path1/my_path2 s3://my_bucket/
# 設定 s3://my_bucket/my_path2 內所有檔案為 public s3cmd setacl --acl-public --recursive s3://my_bucket/my_path2/

2020-10-25

在 Digitalocean Spaces 和 Wasabi 上使用 s3fs 和 rsync

在 Digitalocean Spaces 和 Wasabi 上使用 s3fs 和 rsync

AWS S3 是個方便的雲端工具,唯一的缺點就是價格高了一些(消費者的缺點?) 剛好有客戶是用 digitalocean 的空間,就來試試 Spaces 吧(開始踩雷之旅)。

之前試用 S3,發現 s3fs 真是個好東西,掛上去之後就像使用一般磁碟一樣方便。

在 ubuntu 20.4 上安裝好 s3fs 後,Spaces 的設定一直搞不定,參考了這篇How to mount DigitalOcean Spaces on droplets with s3fs

其中一點是 /etc/fuse.conf 裡的 user_allow_other 要開啟。 另外要開 debug mode 的設定,不然永遠都沒訊息,不管有沒有設定成功。

-o dbglevel=info -f -o curldbg

Digitalocean Spaces 以設定在 sfo2 為例子:

s3fs mySpacesName ${HOME}/s3/myMntFolder -o passwd_file=${HOME}/.passwd-do-spaces -o url=https://sfo2.digitaloceanspaces.com/ -o allow_other -o use_path_request_style -o dbglevel=info -f -o curldbg

上式中,mySpacesName 為 Spaces 名稱;${HOME}/s3/myMntFolder 為掛載的資料夾路徑;.passwd-do-spaces 為金鑰的設定檔。測試後,除錯的參數就可以拿掉了。

Wasabi Storage 的設定:

s3fs myBucketName ${HOME}/s3/myMntFolder -o passwd_file=${HOME}/.passwd-wasabi -o url=https://s3.us-west-1.wasabisys.com

Wasabi 要注意的是,url 的設定。官方說使用 https://s3.wasabisys.com 就可以了,但實際上會出錯(不知道是不是 s3fs 版本的問題)。應該直接使用 endpoint(雲端可用區域)的 url。

原以為掛上去之後就會帆風順,結果原本好用的 rsync 卻一直出狀況。同步上傳沒多少檔案就出錯罷工,之後常常看到隱藏檔的出現,但來源卻沒有這些檔案。

找了好一陣子才發現這篇 S3FS rsync recommendations,主要是針對 rsync 的特性和 S3 的特性做參數的校調。

例如:

rsync -avW --progress --inplace --size-only /mnt/volumes/my_copy_folder /target_folder

目前看來,似乎可以好好用 rsync。 還是有個問題:Digitalocean Spaces 和 Wasabi Storage 上傳的速度好慢...



備註:之後改用 s3cmd 上傳,速度快很多。

2015-04-09

在 DigitalOcean 上快速建立 LAMP + FTP server

在 DigitalOcean 上快速建立 LAMP + FTP server 筆記

1. 在 DigitalOcean 上建立 Droplet
    輸入 Droplet Hostname
    選 $5/mo (視需求而定)
    選 Singapore (目前離台灣最近的點)
    勾選 Enable Backups (視需求而定)
    選 Applications/ LAMP on 14.04 (現成的)
    Create Droplet

2. 使用 Shell 透過 ssh 登入
    ssh root@000.000.000.000 (主機 IP)
    預設的密碼會透過 email 寄給你

3. MySQL root 密碼所在位置
    /etc/motd.tail

4. 安裝 vsftpd
    sudo apt-get install vsftpd

5. 修改 /etc/vsftpd.conf
    write_enable=YES
    local_umask=002 (視情況而定, 檔案上傳後的 chmod mask)
    chroot_local_user=YES

6. 重新啟動 vsftpd
    service vsftpd restart

7. 建立新的系統用戶
    adduser myftpuser

8. 在 /home/myftpuser 下建立子目錄 www/html
    mkdir www

9. 設定 www 目錄及子目錄屬性
    chmod 777 www/ -R

10. 設定家目錄為不可寫 a-w (vsftp 的規定)
    chmod a-w ./myftpuser/

11. 修改 apache2 設定 /etc/apache2/apache2.conf 加入
    <Directory /home/myhomesftp/www/>
        Options FollowSymLinks
        AllowOverride All #mod_rewrite 需要
        Require all granted
    </Directory>

12. 設定啟用 mod_rewrite
    到 /etc/apache2/mods-enabled 設定 soft link
    ln -s ../mods-available/rewrite.load ./

13. 設定 vhost
    修改 /etc/apache2/sites-enabled/000-default.conf
        ServerName 000.000.000.000  #暫時,應該是 domain name
        DocumentRoot /home/myftpuser/www/html

14. 啟用 mcrypt 模組 (phpmyadmin 需要)
    php5enmod mcrypt

15. 啟用 PHP 的 short open tag
    修改 /etc/php5/apache2/php.ini
        short_open_tag = On
        memory_limit = 256M
        post_max_size = 32M
        upload_max_filesize = 8M

16. 重新啟動 apache2
    service apache2 restart

17. 利用 FTP 上傳檔案 (可以順便放上 phpmyadmin)
    檔案上傳之後,可以用下式修改所有檔案屬性
        chmod 777 html -R
    phpmyadmin 必須使用 755

18. 利用 phpmyadmin 上傳 sql 檔

19. 校正系統時間
    ubuntu 設定時區
        dpkg-reconfigure tzdata # 選 Asia - Taipei
    校正時間
        ntpdate time.stdtime.gov.tw
    vsftpd.conf 的 use_localtime 會影響 FileZilla client 的對時, 可以設定為 No

FB 留言