カルボナーラ街道

計測と観察

MacBook Pro M2でCコンパイラ作成入門をやるための開発環境構築: ディレクトリの同期とSSH接続したときのみ特定のディレクトリに移動

SSHrsyncまわり、土地勘が無いので手を動かす。

前回

tokizuoh.hatenablog.com

開発環境

モチベーション

前回は以下をやった。

  • rsyncで単一のファイルを同期
  • SSH接続して固定のコマンドを実行

コンパイラ本を進めていくうちに、アセンブリファイルの他にMakefileを渡したくなってきた。ディレクトリを同期して接続先のシェルでコマンド実行した方が楽そうと思えてきたので試す。

ディレクトリの同期

rsyncで以下のようにした。

rsync \
-avz ./ $HOST:$DIST \
--exclude '.git' \
--exclude '.ssh' \
--rsh "ssh -F ./.ssh/config"

前回はsshのconfigファイルを使ってなかったが、毎回接続先を直接渡す必要がなくて便利だったので使ってみた。

また、--dry-run を付けて何が送信されるかを確認してから本番実行したほうが健全そう。下記でRcloneを試した話を書いたが、mountかsyncのどちらかでローカルとリモートのパスを逆にして手元のディレクトリを吹き飛ばしてしまったので、事前確認の重要性を知った。

Rclone

github.com

ディレクトリの同期でrsyncの他にRcloneを試した。Rcloneでも問題なく同期はできたがMacBook Proにプリインストールされてるrsyncで特に困らなかったので、rsyncを使うようにした。

SSH接続したときのみ特定のディレクトリに移動

毎回上記で同期したディレクトリに移動するのは面倒なのでSSH接続時に特定のディレクトリに移動させるようにした。

接続先の .bashrc に以下を追加した。

if [[ -n "$SSH_CLIENT" ]]; then
    cd /hoge/fuga/9cc
fi

本当はクライアント側で初期ディレクトリを指定したかったが、インターネットの情報では何だかしっくり来なかったので、シンプルに接続先側でSSH接続のときのみ特定のディレクトリに移動するようにした。接続先の用途が他にないのでこれで良いだろう。

参考