0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LS220をS3にバックアップ

Last updated at Posted at 2024-08-12

LS220を手に入れた

ので、sshで入れるようにしたりしました。
が、肝心のs3cmdや、awscliのインストールが上手くいかない。。。。
LS220を色々無茶をしすぎて壊してしまうのも怖いので、一旦、s3の取り扱いをラズベリーパイでやってみる。

目的

LS220というRAID1のNASを手に入れたのですが、AWS S3に保存し、冗長性を確保するのが目的です。
ラズパイからNASをマウントし、これをS3に日次バックアップしていきます。
構想としては、下記のような感じです。

数TBのバックアップなら、数百円/月程度で保存できることになります。

ところで、

s3cmdは、amazon非公式のs3に特化したツールのようです。
一方、awscliは、amazon公式のaws全体を取り扱えるツールのようです。
それぞれに得手不得手があるようです。
なので、今回はインストールの簡便性から、awscliを使います。
s3cmdを使う手もあるようです。

AWSCLI

インストール

公式は下記の通り

ラズパイの場合、Linux ARMを参考にし、

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

設定

を参考にする。Mac向けでしたが、他のOSでも参考になります。
下記で設定内容を確認できます。

$ aws configure

初期設定はこれから入ります。
以下は、設定内容の確認です。

$ aws configure list
$ cat ~/.aws/credentials
$ aws configure list --profile default
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                  default           manual    --profile
access_key     ****************ZH7U shared-credentials-file
secret_key     ****************oGwn shared-credentials-file
    region                <not set>             None    None

下記で接続確認できます。

$ aws s3 ls --profile default
2024-07-12 18:16:01 [bucket name]

試しになにかアップロードしてみる。

アップロードしたいディレクトリにて

aws s3 sync . s3://my_bucket/path --storage-class DEEP_ARCHIVE

無事アップロードまでできました。

NASのマウント

次に対象のディレクトリを持つNASをラズパイ上にマウントします。

を参考にします。
本当は、LS220上で上記awscli(またはs3cmd)を実行したかったのですが、断念しています。
マウント先のディレクトリも迷うところです。
mntや、mediaいずれでもいいようですが、mediaがUSBドライブや、CD-ROMの自動マウント先として使われることが多く、またmntは一時的なマウント先として使われるようです。
って両方とも一時的なマウント先として使ってるからだいたい同じやん!

気を取り直して、マウント先にディレクトリを作成後、

sudo mount -t cifs //192.168.x.xxx/share /mnt/ls220d_share -o username=yyyyy,password=xxxxx,vers=2.0

ここでは念の為に、LS側でリードオンリーのユーザーを本件専用に作っています。
なにかしらラズパイに汚染があったとしても、LS側まで行かない設定です。
と思いましたが、log用のディレクトリにアクセス・保存できませんので、
一部書き込みできるように開放し、

$ id
uid=1000(hoge) gid=1000(hoge) ......

こんなんみてもわからないんですが、,uid=1000,gid=1000を追記します。

sudo mount -t cifs //192.168.x.xxx/share /mnt/ls220d_share -o username=yyyyy,password=xxxxx,vers=2.0,uid=1000,gid=1000

crontabで自動化

こちらのようにcrontabでawsを実行するだけで十分なのですが、NASへ接続できなかったときなどの対処(勝手に消えることとはいと思いますが)を考え、必要なときにマウントし、処理が終わればアンマウントのバッチファイルにしようと思います。

back2s3.sh
#!/bin/bash
# 20240812
# chmod u+x back2s3.sh
# chmod 755 back2s3.sh

# LS220をマウント
sudo mount -t cifs //192.168.x.xxx/log /mnt/ls220d_log -o username=yyyy,password=zzzz,vers=2.0,uid=1000,gid=1000
sudo mount -t cifs //192.168.x.xxx/share /mnt/ls220d_share -o username=yyyy,password=zzzz,vers=2.0
sudo mount -t cifs //192.168.x.xxx/private /mnt/ls220d_private -o username=yyyy,password=zzzz,vers=2.0

# private全体をバックアップ
# aws s3 sync "/mnt/ls220d_private/" "s3://my_bucket/private" --storage-class DEEP_ARCHIVE
# セミテスト用ILのみバックアップ
# aws s3 sync "/mnt/ls220d_private/Image Library" "s3://my_bucket/private/Image Library" --storage-class DEEP_ARCHIVE
# テスト用バックアップ(一旦軽めのバックアップを実施してみる。)
aws s3 sync "/mnt/ls220d_private/test" "s3://my_bucket/private/test" --storage-class DEEP_ARCHIVE > log_`date "+%Y%m%d%H%M%S"`.log

# アンマウント
sudo umount /mnt/ls220d_log
sudo umount /mnt/ls220d_share
sudo umount /mnt/ls220d_private

実行権限を与えます。

$ chmod u+x back2s3.sh
$ chmod 755 back2s3.sh

最後にcrontabに追記します。

$ sudo nano /etc/crontab 

毎日午前4時前ぐらいな感じでいきます。

54 3  * * *   user    works/back2s3.sh

課題

autofs

autofsは、リソース消費が少なくていいらしい。
オンデマンドでマウントでき、自動でアンマウントできる点もいい。

logの保存

logの保存用にNAS内にLOGフォルダを作りましたが、書き込みできません。
NAS側の権限ではなく、クライアント側の権限の問題のようです。
マウントする際に uid と gid オプションを指定してやらないといけないようです。
→対応済み

マウント判別

NASへの接続に失敗し、アップロードができないようなときには中止し、
この旨をメールにて知らせたい。

追記

どうやら、64bit版をインストールしてしまっているようです。
ログを確認すると下記のエラーが発生しています。

hoge.sh: line 42: /usr/local/bin/aws: cannot execute binary file: Exec format error

に従い、64bit版をアンインストールします。

念の為、ディストリビューションと、32bitを確認し、32bit版をインストールします。

$ uname -m
armv7l

$ getconf LONG_BIT
32

上記で、ARM、32bitだと確認できる。

pip3 install awscli --upgrade --user

もちろん、初期設定から始めることになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?