AWSにあるファイルとの同期を実現するsyncコマンドの使い方


AWSとファイルを同期するには
AWSにWebサービスを構築する場合、サービスで公開するファイルを格納するためのデータ領域を作成します。そして、そのデータ領域で公開したファイルと開発用で利用しているローカルなファイルを同期することがよくあります。
AWSに用意したデータ領域のファイルとローカルなファイルを同期するには、インターネットを介して安全に同期する仕組みが必要です。さらに定期的に同期するには、自動で動作する仕組みも検討する必要があります。
続いて、インターネットを介してファイルを同期する仕組みの基本について見て行きましょう。
通信データを暗号化するならssh
今のインターネットは安全ではありません。インターネットを介してデータを転送する場合、暗号化して安全にデータを送る仕組みを利用します。
そのようなインターネットの暗号化でよく使われるのが、公開鍵と秘密鍵を利用する公開鍵暗号方式によりデータを暗号化するSSHです。
AWSにインスタンスやバケットを作成すると、そのアクセスは必ず暗号化されます。今回紹介するAWSのs3 ayncでもSSHによる暗号化が利用されているので、インターネットを介して安全にデータを転送できます。
rysncコマンド
インターネットの拡大と共に普及したOSのLinuxでは、インターネットを安全に利用できるコマンドが幾つも使われています。その1つがインターネットを介してファイルやディレクトリを安全に同期するコマンドのrsyncです。
rsyncコマンドは、同期元と同期先を指定するとその両者を比較して変更のあったファイルやデフィレクトリのみを更新します。
また、同期元や同期先としてネットワークで接続するコンピュータのURLやアカウントも指定できるので、インターネットを介したファイルの同期が可能です。またオプションでsshによる暗号化も指定できます。
rsyncコマンドの例
$ rsync -auz --delete -e ssh /var/www/html/ (アカウント)@(URL):/var/www/html/
AWS CLIでも同期は可能
先ほど紹介したrsyncコマンドを利用するには、AWSのAmazon EC2などに作成したAmazon Linux 2などのLinuxサーバーを設定する必要があります。
Amazon S3のサービスでは、ファイルやディレクトリの同期にAWSのコマンドラインインターフェース(AWS CLI)のs3 sync コマンドを利用することで、Linuxサーバーを介さずに同期することが可能です。
しかも先ほど紹介したrsyncより簡単に操作でき、通信が暗号化されているので安全にファイルやディレクトリの同期を実現できます。
以下で、このコマンドの使い方について詳しく見て行きましょう。
s3 syncコマンドとは
先ほど紹介したようにAWSのコマンドラインインターフェース(AWS CLI)には、Amazon S3に作成したバケットの内容を同期するコマンドとして、s3 syncを利用できます。
次に、このコマンドの使い方について紹介しましょう。
AWS CLIとは
AWSのコマンドラインインターフェース(AWS CLI)は、AWSの各種サービスを管理するためツールです。WindowsやmacOSなどのコンピュータに専用ツールをインストールすることで、コマンドプロンプトやターミナルからAWSの各サービスを制御できます。
また、バッチファイルのようなスクリプトに組み込むことで、AWS CLIを利用した処理の自動化も可能です。
今回紹介するs3 syncは、このAWS CLIコマンドの1つです。このコマンドを利用する場合は事前にインストールしてください。
そして先に「aws」を付けてs3 syncコマンドを実行することでファイルやディレクトリを同期できます。
s3 syncコマンドの実行例
$ aws s3 sync . s3://my-bucket/path
s3 syncの使い方
今回紹介するs3 syncコマンドは、先ほど紹介したLinux用のrsyncコマンドと同じように転送元と転送先を比較して、更新のあったファイルまたはディレクトリを転送するコマンドです。
Amazon S3に確保した領域であるバケットとローカルドライブの同期の他、Amazon S3のバケット間の同期にも利用できます。
s3 syncコマンドを実行する際、転送元と転送先、およびオプションを指定します。なお、オプションは省略可能です。また、AWS CLIコマンドによるやりとりが暗号化されているので安全に利用できます。
構文
$ aws s3 sync (転送元) (転送先) (オプション)
s3 syncのオプション
s3 syncコマンドはオプション無しでもファイルやディレクトリの同期が可能ですが、実行環境によってはオプションを利用します。
例えば、Linux用のrsyncコマンドでは、転送元のファイルが削除されても転送先のファイルは削除されません。しかし、–deleteオプションを指定すると転送先のファイルも削除されます。この–deleteオプションはs3 syncコマンドでも利用できます。
また、特定のファイルを転送から除外する–excludeオプションなどもよく使われます。
ただしLinux用のrsyncと違い、タイムスタンプが更新されていてもファイルサイズが同じ場合は同期されません。rysncコマンドと同じようにタイムスタンプが違う場合も同期してほしい場合は、–exact-timestampsが必要です。
AWSのDataSyncとの比較
AWSでファイルやディレクトリを同期できる機能はs3 syncコマンドだけではありません。AWSではシンプルでかつ高速なデータ移動を実現するサービスとしてDataSyncというサービスも提供しています。
続いて、s3 syncコマンドとDataSyncサービスの違いについて解説します。
DataSyncを利用するには
DataSyncは、ローカルなパソコンなどにDataSync専用のエージェントアプリを設定し、AWSコンソールからDataSyncコンソールに切り替えて利用します。
このようなエージェントを利用することで、大容量のデータを安全にインターネットで転送することが可能です。またDataSyncコンソールに設定するだけで、自動でファイルやディレクトリを同期できます。
s3 syncでも同じ機能を実現できますが、ファイルの同期を運用するスキルを持つエンジニアが対応する必要があります。その点DataSyncを利用することでファイル同期の自動化が可能です。
DataSyncは費用がかかる
先ほど紹介したように、DataSyncはファイル同期に便利なサービスです。しかし、DataSyncを利用するには費用がかかります。
DataSyncではコピーするデータの量に対する料金が課せられ、その料金はギガバイトあたり0.0125USドルです。
例えば10Tバイトのデータを1回転送した場合、1.024 * 0.0125 * 10,000 = 128 USドル、日本円に直すと約14,000円です。転送する容量と頻度を考えて費用を計算してください。
なお、s3 syncコマンドとバッチファイルなどを組み合わせて自動で転送する仕組みを作った場合、このような費用がかかりません。
出典:AWS DataSync の料金│AWS
参照:https://aws.amazon.com/jp/datasync/pricing/
s3 syncコマンドでAWSと簡単に同期
これまで紹介したように、AWS CLIでs3 syncコマンドを使用することで、AWSのAmazon s3にあるファイルやディレクトリを簡単に同期できます。
しかも、AWS CLIはデータが暗号化されており、インターネットを介しても安全に転送することが可能です。
使い方はLinuxのrsyncコマンドとほぼ同じで、バッチファイルにして自動で同期する仕組みも作れます。
ただし、s3 ayncコマンドを組み合わせて自動で同期する仕組みを作るにはスキルを持つエンジニアが必要になることに注意が必要です。
費用はかかりますが、安全に自動で同期できるAWSのDataSyncサービスの利用も検討してください。
この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。