Visual Studio Codeでリモート開発環境と完全同期する


この記事は以下の条件に当てはまる人向けに書いています。

  • 開発環境が共用のリモートサーバー
  • リモートにssh(sftp)でログインできる
  • VimじゃなくてVSCodeを使いたい
  • gitrsync samba lsyncdの併用は遅すぎて無理
  • 更新だけじゃなく削除されたファイルも同期したい
  • ローカル→リモートの一方通行でOK (でも削除は検知したい)
  • 純正のリモート同期が使えない事情がある

ショートカットキーやパスなどMac仕様なのでWindowsの人は適宜読み替えてください。

拡張機能のインストール

sftpを入れる。sftpで検索すると一番上に出てきます。

sftpの設定

Command + P>sftp で設定ファイルを作成する。

sftp.json
{
    "name": "foobar",
    "protocol": "sftp",
    "host": "foobar",
    "port": 22,
    "username": "foo",
    "privateKeyPath": "/Users/foo/.ssh/foobar_rsa",
    "remotePath": "/home/foo/bar",
    "ignore": [
        ".vscode",
        ".git",
        ".DS_Store"
    ],
    "sshConfigPath": "/Users/foo/.ssh/config",
    "syncOption": {
        "delete": true,
        "skipCreate": false,
        "ignoreExisting": false,
        "update": false
    },
    "uploadOnSave": true,
    "watcher": {
        "files": "**/*",
        "autoUpload": true,
        "autoDelete": true
    }
}
項目(key) 意味 説明
name 設定名 任意の設定名。省略可能。
protocol プロトコル ftpかsftp。最近はほとんどsftpなのでよく分からなかったらsftpで。
host ホスト リモートサーバーのホスト名。
port ポート リモートサーバーのポート名。sftpならふつうは22。
username ユーザー名 リモートサーバーにログインするユーザー名。
privateKeyPath 秘密鍵のパス リモートログイン用の秘密鍵のパス。パスワードログインの場合はprivateKeyPathではなくpasswordキーに値としてパスワードを直接書く。
sshConfigPath ssh設定のパス こだわり設定がある場合は指定しよう。
syncOption.delete 同期オプション(delete) 削除を同期するか。
syncOption.skipCreate 同期オプション(skipCreate) 新規作成ファイルをスキップするか。
syncOption.ignoreExisting 同期オプション(ignoreExisting) 既存ファイルの更新をスキップするか。
syncOption.update 同期オプション(update) ローカル側が新しい場合のみ上書き更新する。
uploadOnSave 保存時にアップロード trueを指定するとファイル保存時にアップロードが行われる。
watcher.files 監視するファイル VSCode以外からのファイル変更を監視する対象。
watcher.autoUpload 自動更新 VSCode以外から変更された場合にリモートを自動で更新する。
watcher.autoDelete 自動削除 VSCode以外から削除された場合にリモートを自動で削除する。

よきVSCodeライフを♡