同期コマンド
普段デスクトップを使っているから、外に出るときなど違うパソコンを使わないといけないことがある。
いろいろいじっているから、ほかのパソコンで同じことができないとストレスがたまる。
また、Emacsの設定は割と頻繁に書き換えるので、USBで移し替えてというのもメンドー。
そしてまたいろいろ調べた結果、容量の余っているレンタルサーバーで、sshログインして相互にrsyncをかけることによって同期できるようにした。
これによってほかのパソコンを使うときは事前にコマンドを実行しておけば、おなじ環境で動かせるようになった。設定がテキストファイルのUNIXだからできたことですね。
あとはcronに仕込むなりすれば最低限同期忘れてても問題は少なくなる、というわけだ。
ただ、bashはほぼググっただけしかやったことないので実際よくわからない。動けばいい、そもそもオレのプログラミングはほぼコピペじゃん。
bash は とかいってカッコつけてんじゃねーよ!
はい・・・。
パスを通す時とか、エイリアスを設定するときとか、なにかあったらちょこちょこ見て書くぐらいのことはしていた。
変数化
ということでなんとか書いた、というのは過去のはなしで、今回取り組んだのは変数化だ。
変数化することで保守がしやすくなる。いちいち書くより一箇所にまとめて呼び出したほうがいいのは明らかですね。
例えると教室の掃除と同じ、集めてちりとりでいっきに捨てたほうがいいのだ・・・?ちりとり役って絶対取り合いになるよね・・・。
ということで前回まで使ってたやつを変数化した。
まず、変数でイコールを離しちゃいけないということに驚いたね。見づらい。
a = 10 ☓
a=10 ○
また、シングルクオート'の処理のしかたがわからなかった。変数展開のときにかってになくなってしまうらしい・・?かなりダサい感じで残っているのが残念。
とりあえず、ローカル→リモートが
rsync -avuz --progress -e ssh -i '~/.ssh/rsa' ~/python hoge@hoge.com:~/backup/python
だったのを分割して変数に代入して、
before="rsync -avuz --progress -e " ssh="ssh -i ~/.ssh/rsa" domain="hoge@hoge.com:~/backup/python" for goal_directory in "python" do $before 'ssh -i ~/.ssh/rsa' ~/$goal_directory/ $domain/$goal_directory/; done
とした。これだけ見るとたいしたことなさそうだけど、双方向、複数ファイルあるので、かなりすっきりした。
また、同期ファイルを追加するときはfor文のinのあとに追加すればよい。
・・・今までディレクトリとかファイル名だけを変えて、延々おなじ式を書いてた(コピペだけど)のがアホみたいです・・・。