この記事は最終更新日から1年以上が経過しています。
1.概要
オンプレ版画像サーバの移行に伴い、NASに配置された200万以上のファイルを
S3にアップロードする必要がありました。
ただ、至るところに同じディレクトリのシンボリックリンクが設定されているため、
CLIの「aws s3 sync」を利用すると、不要なシンボリックリンクのファイルもアップロードしてしまいました。
そのため、シンボリックリンク配下のファイルを除いて、S3へアップロードする方法を検討しましたので、
それを明記します。
2.実行コマンド
以下のコマンドを利用します。
find ./ -type f | sed -e 's/^.\///' | xargs -L 1 -P 2 -Ilocalpath aws s3 cp localpath s3://xxxx-xxxx-xxxx-yyyyyyyyy-zz/test_dir/localpath |
3.解説
各コマンドとオプションの解説は以下の通りです。
コマンド/オプション | 解説 |
---|---|
find ./ -type f | 指定された(カレント)ディレクトリからファイルのみを検索する。 |
sed -e ‘s/^.\///’ | findの検索結果の先頭に「.」が付与されているので削除する。 |
xargs -L 1 -P 2 -Ilocalpath | sedコマンドの結果を次のコマンドに渡す。-lのあとの「localpath」は変数として定義する。 |
aws s3 | CLIでS3サービスに関する手続き実行するコマンド。localpathからディレクトリ構成も含めてコピーすることが出来る。 |
4.補足事項
・xargsコマンド の-Pオプションはプロセス数となるので、並列処理が可能となる。
・ただし、毎回S3との認証処理が実行されるため、性能が出ません。
この記事を書いた人
- レコチョクの楽曲情報の検索や、決済/会員情報、 レコメンド情報などを扱う、レコチョクAPIの運用と改善を担当しています。主にプロジェクト管理をやっています。技術力は低めですが、気づきがあったことなどを更新していきます。
最近書いた記事
- 2023.12.09エンジニア組織紹介 - バックエンドアーキテクトG -
- 2023.11.07キャリアの学びを得たオンライン記事の紹介(出会いと経験で自分を変える「キャリアの螺旋」の歩み方)
- 2023.10.20Amazon EBSにおけるボリュームサイズの拡張
- 2017.07.28ローカルからS3にシンボリックリンクを除いてアップロードする方法