私は主にWindowsのバックグラウンドを持っており、Macに移行しています。私はWinSCPを使用していて、 "Keep Remote Directory Up To Date" という機能が大好きでした。
ここに質問があります:変更についてディレクトリを監視し、検出されたときにアップロードするOSX用の同等のSCPクライアントはありますか? GUIクライアントなのかコマンドライン(rsync、sshなど)経由なのかは関係ありません。
最善の策は、おそらく Folder Actions を使用し、 new item alert スクリプトをニーズに適合させて、選択したコマンドラインユーティリティを呼び出すことです。
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つ から、コメント投稿者は次のように述べています。
私のお気に入りの機能の1つは、Transmitで特定のアプリケーション(たとえば、BBEditに.htmlファイル)でドキュメントを開いてから、ドキュメントを編集して保存することです。送信は自動的にそれをサーバーの同じファイルにアップロードします。質問はありません。ウェブサイトを作ったりCSSを編集したりするときに不思議に働きます。 Photoshopを使用して画像に小さな修正を加えるのにも便利です。また、TransmitがPrefを介して特定のファイル拡張子を処理する方法を処理することもできます。
私はあなたが必要とすることをするRubyスクリプトに出くわしました、しかしそれは少し適応する必要があります。
説明:
OS X FSEvents APIを使用して、スクリプトが存在するディレクトリが変更されるたびにrsync https://Gist.github.com/149491
さて、私は同じ種類の問題を抱えていました、そしてこれらを一緒に使うことが可能です:rsync、SSH Passwordless Login、Watchdog(a Python syncユーティリティ)そしてTerminal Notifier(で作られたOS X通知ユーティリティ) Ruby。必要ありませんが、同期がいつ終了したかを知るのに役立ちます)。
Dreamhost wikiのこのチュートリアルを使用して、パスワードなしのログインのキーを作成しました: http://cl.ly/MIw5
1.1。終了したら、すべてが問題ないかどうかをテストします。パスワードなしのログインができない場合は、afpmountを試す必要があります。 Dreamhost(私のサイトがある場所)はafpマウントを許可しませんが、パスワードなしのログインは許可します。ターミナルで、次のように入力します。
ssh [email protected]
パスワードを聞かずにログインする必要があります:P
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/ [email protected]: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の「適性」のように、Brewをインストールする方法については多くのヘルプがあります)。 [ターミナル]に次のように入力します。
brew install libyaml
4.2。次に、「easy_installコマンド」を使用しました。 Watchdogのフォルダーに移動し、「ターミナル」と入力します。
easy_install watchdog
これで、すべてがインストールされました。 同期したいフォルダに移動します、このコードを必要に応じて変更します、ターミナルに入力します。
watchmedo Shell-command
--patterns="*.php;*.txt;*.js;*.css" \
--recursive \
--command='~/Scripts/Sync.sh' \
.
このように[〜#〜]正確に[〜#〜]である必要があり、スラッシュと改行が含まれている必要があるため、コピーする必要がありますこれらの行をテキストエディタに移動し、スクリプトを変更し、ターミナルに貼り付けて、Returnキーを押します。
改行なしで試してみましたが、うまくいきません!
私の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.
さて、フォルダ内のファイルにいくつかの変更を加えて、魔法を見てください!