Chà, tôi cũng gặp vấn đề tương tự và có thể sử dụng cùng nhau: rsync, SSH Passwordless Đăng nhập, Watchdog (tiện ích đồng bộ hóa Python) và Terminal Notifier (tiện ích thông báo OS X được tạo bằng Ruby. Không cần thiết, nhưng cần biết khi quá trình đồng bộ hóa kết thúc).
Tôi đã tạo khóa để Đăng nhập không cần mật khẩu bằng hướng dẫn này từ wiki Dreamhost: http://cl.ly/MIw5
1.1. Khi bạn hoàn thành, hãy kiểm tra xem mọi thứ có ổn không nếu bạn không thể Đăng nhập không cần mật khẩu, có thể bạn phải thử gắn kết afp. Dreamhost (nơi có trang web của tôi) không cho phép gắn kết afp, nhưng cho phép Đăng nhập không cần mật khẩu. Trong thiết bị đầu cuối, gõ:
ssh username@host.com
Bạn nên đăng nhập mà không cần hỏi mật khẩu: P
Tôi đã cài đặt Trình thông báo đầu cuối từ trang Github: http://cl.ly/MJ5x
2.1. Tôi đã sử dụng lệnh cài đặt Gem. Trong Terminal, gõ:
gem install terminal-notifier
2.3. Kiểm tra nếu thông báo hoạt động. Trong Terminal, gõ:
terminal-notifier -message "Starting sync"
Tạo tập lệnh sh để kiểm tra thông báo rsync +. Lưu nó bất cứ nơi nào bạn thích, với tên bạn thích. Trong ví dụ này, tôi sẽ gọi nó là ~ / Sc scripts / sync.sh Tôi đã sử dụng phần mở rộng ".sh, nhưng tôi không biết nếu cần.
#!/bin/bash
terminal-notifier -message "Starting sync"
rsync -azP ~/Sites/folder/ user@host.com:site_folder/
terminal-notifier -message "Sync has finished"
3.1. Hãy nhớ cho phép thực thi kịch bản sh này. Trong Terminal, gõ:
sudo chmod 777 ~/Scripts/sync.sh
3.2. Chạy tập lệnh và xác minh xem các thông báo có được hiển thị chính xác không và rsync thực sự đồng bộ hóa thư mục cục bộ của bạn với thư mục từ xa.
Cuối cùng, tôi đã tải xuống và cài đặt Watchdog từ trang Github: http://cl.ly/MJfb
4.1. Đầu tiên, tôi đã cài đặt phần phụ thuộc libyaml bằng cách sử dụng Brew (có rất nhiều trợ giúp về cách cài đặt Brew - giống như "năng khiếu" cho OS X). Trong Terminal, gõ:
brew install libyaml
4.2. Sau đó, tôi đã sử dụng "lệnh easy_install". Chuyển đến thư mục của Watchdog và nhập vào Terminal:
easy_install watchdog
Bây giờ, mọi thứ đã được cài đặt! Chuyển đến thư mục bạn muốn được đồng bộ hóa , thay đổi mã này theo nhu cầu của bạn và nhập vào Terminal:
watchmedo shell-command
--patterns="*.php;*.txt;*.js;*.css" \
--recursive \
--command='~/Scripts/Sync.sh' \
.
Nó phải chính xác theo cách này, với dấu gạch chéo và ngắt dòng, vì vậy bạn sẽ phải sao chép các dòng này vào trình soạn thảo văn bản, thay đổi tập lệnh, dán vào thiết bị đầu cuối và nhấn return.
Tôi đã thử mà không ngắt dòng, và nó không hoạt động!
Trong máy Mac của tôi, tôi luôn gặp lỗi, nhưng dường như nó không ảnh hưởng gì:
/Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.
Bây giờ, thực hiện một số thay đổi trong một tệp trong thư mục và xem phép thuật!
sync
nó là một tiện ích hệ thống (ít nhất là trên mọi * nix tôi đã thấy; không chắc chắn về OSX, nhưng không thấy lý do tại sao nó sẽ không ở đó). Bạn có thể muốn cung cấp cho snipped của bạn một tên khác. Ngoài ra, điều này không vượt qua SSH, điều mà OP muốn; chỉ cần chuyển-e ssh
đến rsync sẽ khắc phục điều đó.