# リモートサーバとローカル間のファイル同期 ##### 前提 - リモートサーバに接続する方法がSSH公開鍵認証であること - ローカルサーバに秘密鍵が「600」の権限で保持していること ##### 参考 - [rsyncのサンプル例集 - Qiita](https://qiita.com/shnagai/items/7403411b4aa193d0fa0d) - [SSH接続のパスフレーズ入力を省略する設定方法|ssh-agent・ssh-add](https://blog-and-destroy.com/20453) - [ssh-addでエラー(Could not open a connection to your authentication agent.) | WEBREE](https://webree.jp/article/ssh-add-error/) - [SSH/SCP のログイン自動化に sshpass が便利すぎた - CUBE SUGAR CONTAINER](https://blog.amedama.jp/entry/2017/06/03/131852) - [`sshpass` で秘密鍵のパスフレーズを自動入力する - Qiita](https://qiita.com/ysd_marrrr/items/5cc395abd2c0b99d1138) ##### sshpass のインストール 自動で秘密鍵のパスワードを入力するために「sshpass」を使用する。 ``` $ sudo yum install sshpass ``` ##### パスフレーズファイルの作成 「sshpass」コマンドでパスフレーズを様々な方法で指定できる。 今回はコマンドに直接パスワードを入力しないように、パスフレーズが書かれたファイルを使用する。 ``` $ vi ssh_pathphrase ======= <パスフレーズ> ======= ``` ##### ファイル同期 下記のコマンドでリモートサーバのファイルを同期(コピー)する。 下記の例では、リモートサーバ先を「src」ディレクトリ、ローカルサーバを「dest」ディレクトリとする。 ``` $ sshpass -f <パスフレーズファイルのパス> -P "Enter passphrase for key" \ rsync -av -e 'ssh -i <秘密鍵のパス>' <ユーザ>@<リモートホスト>:~/src/ ~/dest ```