#はじめに
機械学習などの手元のPCで出来ないような重い処理が必要な際に,処理を回すサーバーは存在するけど,kubernetesやジョブスケジューラが置いてある規模ではないので,手動でコードを送って実行しなければならないような環境があると思います.
VSCodeを使っていれば,Remote DevelopmentというExtensionを使えば,リモートにssh経由でVSCode上でアクセスしてファイルを同期できます.
しかしコードがリモート上で編集されるため,今コードが置いてあるサーバーとは別のサーバーで実行したい際に,サーバー間でのファイルの同期が面倒という問題があります.
そこで,VSCodeのsync-rsyncというExtensionを使って,コードを手元で管理し,必要な際にrsyncでリモートと同期して迅速にコードを同期することでこの問題を解決します.
How To Set up
- VSCodeのExtensionsを開き,Sync-RsyncRsyncパッケージをインストールします.
- VSCodeのSettingsを開き,setting.jsonを開いて編集できる状態にする,もしくは検索欄でsync-rsyncで検索し,sync-rsyncに関するセッティングが出来る状況にします.(以下setting.jsonを開いた状態を想定します.)
ちなみにsettin.jsonは画像で示した赤丸をクリックすると開けます.
- 同期したいローカルのフォルダとリモートのフォルダを以下のように指定します.
{
"sync-rsync.sites": [
{
"name" : "hoge",
"localPath": "/home/user/project/s1/",
"remotePath": "user@server:/var/www/s1/"
},
{
"name" : "fuga",
"localPath": "/home/user/projects/t2/",
"remotePath": "user@server:/var/www/s2/"
}
]
}
それぞれの変数の役割は以下の通りです
- name : 設定の名前
- localPath : 手元のマシンの同期したいパス
- remotePath : リモートのマシンの同期したいパス
接続先は複数登録できます.一つ一つ同期する方法や全てを同時に同期する方法もあるので,必要におうじて設定してください.
なお,ssh経由でrsyncを行うことが想定されるので,必要に応じて以下のようにsshのオプションを設定してください.
{
"sync-rsync.shell": "ssh -i ~/.ssh/id_rsa"
}
これ以外にも,vscode上でssh-agentを設定したりすると,VSCodeでssh接続全般が楽になります
(参考)[Windows] VSCode で使うssh-agentについて
- Ctrl+Shift+P(Macの場合はCommand+Shift+P)を押して,Sync-Rsyncと打つと,以下のようにコマンドが複数出てきます.
Sync-Rsync: Sync Local to Remote(Single site)を選択した場合は,先ほど"name"で設定した接続先を選び,設定したサーバーと同期します.
Sync-Rsync: Sync Local to Remoteを選択した場合は,設定した全てのサーバーで同期を行います.
また,これと逆にリモートからローカルに共有する,Sync Remote to Localというコマンドも,使うことが出来るようになります.
おわりに
いかがでしょうか。複数のサーバーがあってそれぞれのサーバーごとにコードを管理しなければいけないのは面倒でしたが,sync-rsyncを使えば手元でコードを一括で管理することが出来ます.
また,Remote Developmentを利用した場合,接続先ごとにvscodeがインストールされてその都度extensionを設定しなければいけなかったり,リモートに繋げなくなった場合にコードに一切アクセス出来なくなる恐れがありますが,このようにローカルでコードを管理しておけばその心配もなくなります.
このように複数のサーバーでコードを動かす必要がある場合,sync-rsyncによるコード共有は強力な手段となります.利用用途に応じて是非ご活用ください.