Cyberduck CLIを利用してLinode Object Storageにコンテンツを移設する方法


# Linode Object Storageとは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/cd7e77ba-cc88-036a-0a94-96f5cc55dff2.png)

Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。

- [Linode Object Storage](https://www.linode.com/ja/products/object-storage/)
- [Enhancing Object Storage Performance](https://www.linode.com/blog/cloud-storage/nvme-object-storage-enhanced-performance/)
- [Akamai Cloud Computing Services(Linode)とは何かをわかりやすく解説](https://qiita.com/isss802/items/5313c7a6da1d9ed50a38)

※1 リージョンによって制限や価格が異なります、詳しくは[こちら](https://www.linode.com/docs/products/storage/object-storage/#specifications)を参照ください。


## Linode Object Storageへコンテンツを移設する

Linode Object Storageへコンテンツを移設する方法はいくつかあります。
- Cyberduck GUIを利用してバケット間のコピーを行う
- Cyberduck CLIを利用してバケット間のコピーを行う
- rcloneを利用してバケット間コピーを行う
- s5cmd等のツールを利用してバケットのデータをサーバーに移し、移したデータを移行先のバケットに転送する

今回はLinodeのサーバーを利用したCyberduck CLIの手順についてご紹介いたします。

## Cyberduck CLIのセットアップ

LinodeにてUbuntuのサーバーを起動します。
今回の試みではネットワーク転送を考慮する必要がありますが、Linodeの最小インスタンスではOut 1Gbpsは確保されているため今回はテストのため最小を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/e52dd075-127e-28b8-00a0-187e22bee036.png)


起動したサーバーにCyberduck CLIをインストールします。

https://duck.sh/

```sh
echo -e "deb https://s3.amazonaws.com/repo.deb.cyberduck.io stable main" | sudo tee /etc/apt/sources.list.d/cyberduck.list > /dev/null
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FE7097963FEFBE72
sudo apt-get update
sudo apt-get install duck
```
パッケージインストール後の動作確認でバージョンを確認してコマンドのインストールは完了です。

```sh
duck --version
Cyberduck 8.3.3 (37544). Not registered. Purchase a donation key to support the development of this software.
```


## アクセスキーの準備

今回の例では、AWSのS3からLinode Object Storageに移設してみます。

AWSではS3バケットにアクセス可能なアクセスキーを発行してください。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_access-keys.html

キーの情報は後で利用するため控えておきます。

```
aws_access_key_id=XXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXX
```

Linode Object Storageのアクセスキーを発行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/1716a36e-93ea-deee-d2e7-c01e599826ef.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/04d1960a-d5b7-2619-860f-b087d7777297.png)

キーの情報は後で利用するため控えておきます。


```
aws_access_key_id=XXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXX
```

## Cyberduck CLIを利用したバケット間コピー

下記はAWS S3の日本リージョン(ap-northeast-1)からLinode Object StorageのAtlanta (us-southeast-1)にファイルをコピーする際のコマンドとなります。

```sh
duck --copy s3://[AWSのアクセスキー]@s3.ap-northeast-1.amazonaws.com/[バケット名]/ s3://[Linode Object Storageのアクセスキー]@us-southeast-1.linodeobjects.com/[バケット名]/

Login s3.ap-northeast-1.amazonaws.com. Login s3.ap-northeast-1.amazonaws.com – S3 with username and password. No login credentials could be found in the Keychain.
Access Key ID (XXXXXXXXXXXXXXXXXX): エンターキーを押す
Login as XXXXXXXXXXXXXXXXXXXX
Secret Access Key:　AWS S3のシークレットキーを入力
WARNING! Passwords are stored in plain text in ~/.duck/credentials.
Save password (y/n): y　シークレットキーを保存
hisat-dd…hisat-dd
Login us-southeast-1.linodeobjects.com. Login us-southeast-1.linodeobjects.com – S3 with username and password. No login credentials could be found in the Keychain.
Access Key ID (XXXXXXXXXXXXXXXXXX): エンターキーを押す
Login as XXXXXXXXXXXXXXXXXXXX
Secret Access Key:　Linode Object Strageのシークレットキーを入力
WARNING! Passwords are stored in plain text in ~/.duck/credentials.
Save password (y/n): y　シークレットキーを保存

Copy complete. 
```

私の環境では1MBのファイルを100個転送した時間は3分2秒かかりました。


## まとめ
今回はCyberduck CLIを利用したバケット間コピーの方法をご紹介しました。
転送ファイル数などによっては、s5cmdを利用した方法が早い可能性もありますが、Cyberduck CLIを利用した場合には直接バケット間でコピーできる手軽さがあります。
Linode Object Storageにデータを移設する際の参考にしてください。

## 関連記事

アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

https://qiita.com/organizations/Akamai