OSX SSH rsync - Оновлювати віддалений каталог


11

Я в основному з фону Windows, переходячи на Mac. Я використовував WinSCP і любив функцію під назвою "Тримати віддалений каталог актуальним" .

Ось питання: чи існує еквівалентний SCP-клієнт для OSX, який буде відслідковувати каталог змін та завантажувати їх при виявленні? Мені все одно, чи це клієнт GUI або через командний рядок (rsync, ssh тощо).

Відповіді:



12
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

Другий рядок виконується run_rsyncодин раз беззастережно, а потім - при кожній зміні поточного каталогу (або вкажіть точний шлях замість .)

Вам знадобиться fswatch- ось як встановити заварку :

brew install fswatch

Параметри Rsync:

  • -a - означає "архів" та синхронізує рекурсивно та зберігає символічні посилання, спеціальні файли та файли пристроїв, час модифікації, групу, власника та дозволи.
  • -z - стиснення
  • -П - поєднує прапори - прогрес і - частковий. Перша з них дає панель прогресу для переказів, а друга дозволяє відновити перервані передачі
  • --exclude - виключає файли за зразком

Ти мене на деякий час справді плутав, бо syncце системна утиліта (принаймні, на кожному * nix, який я бачив; не впевнений у OSX, але не бачиш, чому його там не було). Ви можете надати іншим ім’ям інше ім’я. Крім того, це не стосується SSH, чого хотіла ОП; просто перехід -e sshдо rsync повинен це виправити.
CVn

@ MichaelKjörling: +1: виправлено, дякую за повідомлення!
Даніель

Я не розумію ваших виключень, ви могли б це пояснити?
peedee

1

Ви можете використовувати запускати замість дій папок (щоб отримати який-небудь зразок коду просто google для: запускаючий папку).

Потім ви можете поєднати запущений елемент перегляду папок із сценарієм scp, подібним до цього .

Або використовуйте rsync над ssh так:

rsync -urltv --delete -e ssh /path/to/dir othermachine:/path/to/dir

Про комерційне міжплатформене програмне рішення див. У GoodSync .


0

Перевірте передачу Панікою. З одного зі своїх публікацій у блозі , коментатор сказав:

Одна з моїх улюблених особливостей, яку деякі люди можуть не знати, коли ви відкриваєте документ у певній програмі в програмі Transmit (скажімо, .html файл у BBEdit), після чого відредагуйте документ та збережіть його; Передача автоматично завантажує його назад на сервер у той самий файл, без запитань. Це творить чудеса під час створення веб-сайтів та редагування CSS. Також зручно робити невеликі виправлення зображень через Photoshop. Ви також можете керувати тим, як Transmit обробляє певні розширення файлів за допомогою Prefs.


Я розглянув Transmit - на жаль, він не підтримує SCP-з'єднання лише SFP. Також Transmit відмовляється відкривати мої файли приватного ключа.
pygorex1

Ця особливість дещо інша. Це просто означає, що ви можете безпосередньо редагувати файли з віддаленого сервера за допомогою редактора на ваш вибір. Інші програми FTP також підтримують це.
Даніель Бек

0

Я натрапив на рубіновий сценарій, який виконує те, що вам потрібно, але це потребує трохи адаптації.

Опис:
rsync, коли каталог сценарію змінюється за допомогою API X FSEvents API https://gist.github.com/149491


0

Ну, у мене були такі ж проблеми, і можливо використовувати їх разом: rsync, SSH Passwordless Login, Watchdog (утиліта синхронізації Python) та Terminal Notifier (утиліта сповіщення OS X, створена разом з Ruby. Не потрібна, але допомагає знати коли синхронізація закінчена).

  1. Я створив ключ до Безпечного пароля, використовуючи цей підручник з Вікі Dreamhost: http://cl.ly/MIw5

    1.1. Коли ви закінчите, перевірте, чи все в порядку ... якщо ви не можете ввійти без пароля, можливо, вам доведеться спробувати afp mount. Dreamhost (де мій сайт) не дозволяє монтувати afp, але дозволяє ввійти без пароля. У терміналі введіть:

    ssh username@host.com Ви повинні увійти, не вимагаючи паролів: P

  2. Я встановив повідомлення про термінали зі сторінки Github: http://cl.ly/MJ5x

    2.1. Я використав команду встановлення Gem. У Терміналі введіть:

    gem install terminal-notifier

    2.3. Перевірте, чи працює сповіщення. У Терміналі введіть:

    terminal-notifier -message "Starting sync"

  3. Створіть сценарій sh, щоб перевірити повідомлення rsync +. Збережіть його куди завгодно, із вподобаним ім’ям. У цьому прикладі я буду називати його ~ / 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 насправді синхронізує вашу локальну папку з віддаленою папкою.

  4. Нарешті, я завантажив і встановив сторожову службу зі сторінки Github: http://cl.ly/MJfb

    4.1. По-перше, я встановив залежність від libyaml за допомогою Brew (є велика допомога, як встановити Brew - як "придатність" для OS X). У Терміналі введіть:

    brew install libyaml

    4.2. Потім я використав команду "easy_install". Перейдіть у папку Watchdog та введіть термінал:

    easy_install watchdog

  5. Тепер все встановлено! Перейдіть до папки, яку потрібно синхронізувати , змініть цей код на свої потреби та введіть термінал:

      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.

    Тепер внесли деякі зміни у файл всередині папки, і спостерігайте за чарами!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.