開発環境から別のサーバーの本番環境にファイルを頻繁に更新するため、両方のホストが同じパスを持ち、ファイルを更新してパラメータに同じパスを表示することが繰り返されますscp
。
パラメータを使用して中括弧拡張やその他の技術を使用する方法はありますかscp
?そのうちの1つは、出発地や目的地をuser@host:
最初に含める必要があることを知っています。
私がしたいことは:
scp user@{dev-server,production-server}:/path/to/file
答え1
私は両方のscpを使用しない2つの解決策を思い出しました。
1.使用.ssh/config助ける
つまり、.ssh/configにこのような内容を入れてください。
Host p
HostName production.domain.com
Host d
HostName development.domain.com
その後、scpコマンドを短縮できます。
scp user@d:/path user@p:/path
2. Gitなどのソースコード管理ソフトウェアを使用してください。したがって、デバッグやコーディングなどを完了したら、次のことができます(単純化)。
git add /path/to/my_file
git commit -m "new version and features done"
git push production master
(Sshを使用するようにGitを設定するだけです)
3.ユーザーの便宜のために特別に設計されたbashスクリプトqscpまたはQuick-scpを使用します。 :) https://github.com/zladuric/quick-scp デフォルトでは、qscpファイルをインポートして実行可能にします。 (デフォルトを環境に合わせて変更します)。
1つの必須パラメータと2つのオプションのパラメータが必要です。例:
./qscp file # it will use defaults
./qscp path/to/dir dest.server.com # uses default source, but to other dest
./qscp /abs/path/to/file dest.srv.com src.srv.com # takes both dest and source server args
スクリプトは特定の要件に合わせて簡単にカスタマイズできるはずですが、それほど強力ではありません。 scpバイナリ、ssh_keyファイル、または同様のファイルの場所を調整する必要があるかもしれません。
その人のりんごはどうですか? :)
答え2
入力を減らすために実行される各コマンドにエイリアスを追加する方が良いと思います。
.bashrc
ユーザーファイルに次のコマンドを追加します。
alias tx='scp user@{dev-server,production-server}:/path/to/file'
これにより、コマンド全体を入力するときに発生する可能性がある入力エラーを減らすのに役立ちます。
しかし、私はあなたがやっている方法がまったく正しいとは思いません。 zladuricが2番目の方法で述べたように、コードデータベースを維持するには、ある種のバージョン管理システムを使用する必要があります。これにより、以前のバージョンに戻すことができます。