LoginSignup
3
4

More than 3 years have passed since last update.

VSCodeでリモートにある複数のサーバーにファイルを同期して機械学習などの重いタスクを実行する(sync-rsync extension)

Last updated at Posted at 2020-07-11

はじめに

機械学習などの手元のPCで出来ないような重い処理が必要な際に,処理を回すサーバーは存在するけど,kubernetesやジョブスケジューラが置いてある規模ではないので,手動でコードを送って実行しなければならないような環境があると思います.
VSCodeを使っていれば,Remote DevelopmentというExtensionを使えば,リモートにssh経由でVSCode上でアクセスしてファイルを同期できます.
しかしコードがリモート上で編集されるため,今コードが置いてあるサーバーとは別のサーバーで実行したい際に,サーバー間でのファイルの同期が面倒という問題があります.
そこで,VSCodeのsync-rsyncというExtensionを使って,コードを手元で管理し,必要な際にrsyncでリモートと同期して迅速にコードを同期することでこの問題を解決します.

How To Set up

  1. VSCodeのExtensionsを開き,Sync-RsyncRsyncパッケージをインストールします.
  2. VSCodeのSettingsを開き,setting.jsonを開いて編集できる状態にする,もしくは検索欄でsync-rsyncで検索し,sync-rsyncに関するセッティングが出来る状況にします.(以下setting.jsonを開いた状態を想定します.) ちなみにsettin.jsonは画像で示した赤丸をクリックすると開けます.

opensetting.png

  1. 同期したいローカルのフォルダとリモートのフォルダを以下のように指定します.
setting.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のオプションを設定してください.

setting.json
{
"sync-rsync.shell": "ssh -i ~/.ssh/id_rsa"
}

これ以外にも,vscode上でssh-agentを設定したりすると,VSCodeでssh接続全般が楽になります
(参考)[Windows] VSCode で使うssh-agentについて

  1. Ctrl+Shift+P(Macの場合はCommand+Shift+P)を押して,Sync-Rsyncと打つと,以下のようにコマンドが複数出てきます.

sync-rsync.png

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によるコード共有は強力な手段となります.利用用途に応じて是非ご活用ください.

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