Keep Remote Directory Up-to-date

后端 未结 17 1720
一向
一向 2021-01-30 06:39

I absolutely love the Keep Remote Directory Up-to-date feature in Winscp. Unfortunately, I can\'t find anything as simple to use in OS X or Linux. I know the same thing can

17条回答
  •  梦如初夏
    2021-01-30 07:20

    Well, I had the same kind of problem and it is possible using these together: rsync, SSH Passwordless Login, Watchdog (a Python sync utility) and Terminal Notifier (an OS X notification utility made with Ruby. Not needed, but helps to know when the sync has finished).

    1. I created the key to Passwordless Login using this tutorial from Dreamhost wiki: http://cl.ly/MIw5

      1.1. When you finish, test if everything is ok… if you can't Passwordless Login, maybe you have to try afp mount. Dreamhost (where my site is) does not allow afp mount, but allows Passwordless Login. In terminal, type:

      ssh username@host.com You should login without passwords being asked :P

    2. I installed the Terminal Notifier from the Github page: http://cl.ly/MJ5x

      2.1. I used the Gem installer command. In Terminal, type:

      gem install terminal-notifier

      2.3. Test if the notification works.In Terminal, type:

      terminal-notifier -message "Starting sync"

    3. Create a sh script to test the rsync + notification. Save it anywhere you like, with the name you like. In this example, I'll call it ~/Scripts/sync.sh I used the ".sh extension, but I don't know if its needed.

      #!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ user@host.com:site_folder/ terminal-notifier -message "Sync has finished"

      3.1. Remember to give execution permission to this sh script. In Terminal, type:

      sudo chmod 777 ~/Scripts/sync.sh 3.2. Run the script and verify if the messages are displayed correctly and the rsync actually sync your local folder with the remote folder.

    4. Finally, I downloaded and installed Watchdog from the Github page: http://cl.ly/MJfb

      4.1. First, I installed the libyaml dependency using Brew (there are lot's of help how to install Brew - like an "aptitude" for OS X). In Terminal, type:

      brew install libyaml

      4.2. Then, I used the "easy_install command". Go the folder of Watchdog, and type in Terminal:

      easy_install watchdog

    5. Now, everything is installed! Go the folder you want to be synced, change this code to your needs, and type in Terminal:

        watchmedo shell-command
            --patterns="*.php;*.txt;*.js;*.css" \
            --recursive \
            --command='~/Scripts/Sync.sh' \
            .
      

      It has to be EXACTLY this way, with the slashes and line breaks, so you'll have to copy these lines to a text editor, change the script, paste in terminal and press return.

      I tried without the line breaks, and it doesn't work!

      In my Mac, I always get an error, but it doesn't seem to affect anything:

      /Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.

      Now, made some changes in a file inside the folder, and watch the magic!

提交回复
热议问题