私は主にWindowsの出身で、Macに移行しています。私はWinSCPを使用しており、「リモートディレクトリを最新に保つ」という機能を気に入っていました。
ここに質問があります:OSX用の同等のSCPクライアントで、ディレクトリの変更を監視し、検出されたときにアップロードしますか?GUIクライアントなのか、コマンドライン(rsync、sshなど)なのかは関係ありません。
私は主にWindowsの出身で、Macに移行しています。私はWinSCPを使用しており、「リモートディレクトリを最新に保つ」という機能を気に入っていました。
ここに質問があります:OSX用の同等のSCPクライアントで、ディレクトリの変更を監視し、検出されたときにアップロードしますか?GUIクライアントなのか、コマンドライン(rsync、sshなど)なのかは関係ありません。
回答:
おそらく、フォルダアクションを使用し、新しいアイテムアラートスクリプトをニーズに合わせて、選択したコマンドラインユーティリティを呼び出します。
alias run_rsync='rsync -azP --exclude ".*/" --exclude ".*" --exclude "tmp/" /source_folder username@host:/destination_folder'
run_rsync; fswatch -o . | while read f; do run_rsync; done
2行目はrun_rsync
無条件に1回実行され、次に現在のディレクトリが変更されるたびに(またはの代わりに正確なパスを指定します.
)
必要になりますfswatch
-これはbrew経由でインストールする方法です:
brew install fswatch
Rsyncオプション:
パニックによる送信を確認してください。彼らのブログ投稿の1つから、コメント者は言った:
Transmitで特定のアプリケーションでドキュメントを開いたときに(たとえば、.htmlファイルをBBEditに入れてみましょう)、ドキュメントを編集して保存すると、私のお気に入りの機能の1つになります。Transmitはそれをサーバーに自動的に同じファイルにアップロードします。質問はありません。それはウェブサイトを作り、CSSを編集するときに不思議に働きます。Photoshopを介して画像に小さな修正を加えるのにも便利です。TransmitがPrefsを介して特定のファイル拡張子を処理する方法を処理することもできます。
私はあなたが必要なことをするルビスクリプトに出くわしましたが、それは少し適応する必要があります。
説明:
OS X FSEvents API https://gist.github.com/149491を使用して、スクリプトが存在するディレクトリが変更されるたびにrsync
まあ、私は同じ種類の問題があり、これらを一緒に使用することが可能です:rsync、SSH Passwordless Login、Watchdog(Python同期ユーティリティ)、Terminal Notifier(Rubyで作成されたOS X通知ユーティリティ。不要ですが、知っておくと役立ちます)同期が完了したとき)。
Dreamhost wikiの次のチュートリアルを使用して、パスワードなしのログインのキーを作成しました:http ://cl.ly/MIw5
1.1。完了したら、すべてが正常かどうかをテストします。パスワードなしのログインができない場合は、afpマウントを試してみてください。Dreamhost(私のサイトがある場所)ではafpマウントは許可されていませんが、パスワードなしのログインは許可されています。ターミナルで次のように入力します。
ssh username@host.com
パスワードを尋ねられることなくログインする必要があります:P
Terminal NotifierをGithubページからインストールしました:http : //cl.ly/MJ5x
2.1。Gemインストーラーコマンドを使用しました。ターミナルで、次のように入力します。
gem install terminal-notifier
2.3。通知が機能するかどうかをテストします。ターミナルで次のように入力します。
terminal-notifier -message "Starting sync"
rsync +通知をテストするshスクリプトを作成します。好きな名前で好きな場所に保存してください。この例では、〜/ Scripts / sync.shという名前を付けます。「。sh拡張子を使用しましたが、必要かどうかはわかりません。
#!/bin/bash
terminal-notifier -message "Starting sync"
rsync -azP ~/Sites/folder/ user@host.com:site_folder/
terminal-notifier -message "Sync has finished"
3.1。このshスクリプトに実行許可を与えることを忘れないでください。ターミナルで、次のように入力します。
sudo chmod 777 ~/Scripts/sync.sh
3.2。スクリプトを実行し、メッセージが正しく表示され、rsyncがローカルフォルダーとリモートフォルダーを実際に同期していることを確認します。
最後に、GithubページからWatchdogをダウンロードしてインストールしました:http : //cl.ly/MJfb
4.1。最初に、Brewを使用してlibyaml依存関係をインストールしました(OS Xの「aptitude」のように、Brewをインストールする方法はたくさんあります)。ターミナルで、次のように入力します。
brew install libyaml
4.2。それから、「easy_installコマンド」を使用しました。Watchdogのフォルダに移動し、Terminalと入力します。
easy_install watchdog
これで、すべてがインストールされました!あなたが同期したいフォルダを移動し、あなたのニーズにこのコードを変更し、ターミナルに入力します。
watchmedo shell-command
--patterns="*.php;*.txt;*.js;*.css" \
--recursive \
--command='~/Scripts/Sync.sh' \
.
それはしなければなら丁度あなたは、テキストエディタにこれらの行をコピーするスクリプトを変更、ターミナルを押し見返りに貼り付ける必要がありますので、スラッシュと改行で、この方法。
改行せずに試しましたが、うまくいきません!
私のMacでは、常にエラーが発生しますが、何の影響もないようです。
/Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.
さて、フォルダ内のファイルにいくつかの変更を加え、魔法を見てください!
sync
。切り取ったものに別の名前を付けることもできます。また、これはOPが望んでいたSSHを経由しません。-e ssh
rsyncに渡すだけで修正できます。