LoginSignup
1
3

More than 5 years have passed since last update.

Dockerを使った開発環境を快適にしてみた - ファイルやディレクトリの同期

Last updated at Posted at 2017-08-02

はじめに

  • ローカル上でファイル操作やソースコードの修正をした際に、Dockerで構築したサーバへ同期を行いたい場合に使います。
  • Dockerには共有フォルダのマウントがありますが、Dockerサーバ上でパーミッションを変更できない制限があるので、rsyncコマンドを利用して同期をかけるようにしました。
  • 前提として、公開鍵認証でのSSH接続が行えるものとします。
  • あくまで、開発環境で利用していただくことを推奨します。本番環境などで実行すると予期せぬ動作になる可能性があります。
  • なんかDocker関係なく、rsyncコマンドの説明みたいになってしまった。。。
  • Webサーバの場合でしたら、この辺参考にしていただければと思います。

ファイルやディレクトリの同期

コマンド

/usr/bin/rsync --copy-links -avuz --delete -e "ssh -p ${PORT}" ${SHARED_DIRECTORY} ${USER}@${DOMAIN}:${DEPLOY_DIRECTORY}

入力項目

${PORT}

SSHのポート番号をしています。

${USER}

SSHのユーザ名をしています。

${DOMAIN}

Dockerで構築したサーバの接続先IP or ドメイン名を指定します。

${SHARED_DIRECTORY}

ローカル環境の共有元ディレクトリパスを指定します。
ディレクトリ配下のファイルをすべて指定したい場合は、そのディレクトリ名を含めたパスを指定します。

${DEPLOY_DIRECTORY}

Dockerで構築したサーバの共有先ディレクトリパスを指定します。
ディレクトリ配下のファイルをすべて指定したい場合は、そのディレクトリ名を含めないパスを指定します。

コマンドオプション

--copy-links

シンボリックリンクをコピーします。

-a

コピー元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。

-v

コピーしているファイル名やバイト数などの情報を表示します。

-u

コピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。

-z

通信を圧縮します。

-n

--dry-runオプションです。実行テストを行う際に用います。

--delete

コピー元で削除されたファイルをコピー先でも削除します。

-e

SSH接続でリモートサーバにデータをコピーする場合に使用します。

1
3
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
1
3