나는 주로 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
두 번째 줄은 run_rsync
무조건 한 번 실행 된 다음 현재 디렉토리에서 변경 될 때마다 실행됩니다 (또는 대신 정확한 경로 지정 .
).
당신이 필요합니다 fswatch
여기를 통해 설치하는 방법입니다 - 양조 :
brew install fswatch
재 동기화 옵션 :
패닉으로 전송 을 확인하십시오 . 에서 자신의 블로그 게시물 중 하나 하는 주석 말했다 :
내가 좋아하는 기능 중 일부는 사람들이 알지 못할 수도 있습니다. 전송에서 특정 응용 프로그램으로 문서를 열면 (.html 파일을 BBEdit이라고 가정) 문서를 편집하고 저장하십시오. 전송은 질문없이 자동으로 서버에 동일한 파일로 다시 업로드합니다. 웹 사이트를 만들고 CSS를 편집 할 때 궁금합니다. 또한 Photoshop을 통해 이미지를 약간 수정하는 것이 편리합니다. 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
Github 페이지에서 터미널 알리미를 설치했습니다 : http://cl.ly/MJ5x
2.1. Gem installer 명령을 사용했습니다. 터미널에 다음을 입력하십시오.
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 의존성을 설치했습니다. 터미널에 다음을 입력하십시오.
brew install libyaml
4.2. 그런 다음 "easy_install 명령"을 사용했습니다. Watchdog 폴더로 이동하여 터미널에 입력하십시오.
easy_install watchdog
이제 모든 것이 설치되었습니다! 당신이 동기화 할 폴더를 이동 , 여러분의 필요에이 코드를 변경 , 터미널에 입력 :
watchmedo shell-command
--patterns="*.php;*.txt;*.js;*.css" \
--recursive \
--command='~/Scripts/Sync.sh' \
.
그것은이어야 정확히 당신이 텍스트 편집기에 다음 줄을 복사 할 수있는 스크립트를 변경, 터미널 및 Enter 키를 눌러 붙여 넣기거야 그래서, 슬래시 및 줄 바꿈으로, 이런 식으로.
줄 바꿈없이 시도했지만 작동하지 않습니다!
내 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
(그것은있을 수없는 이유하지 않도록 OSX에 대한,하지만 reaosn을 볼 수 없습니다 내가 본 모든 * nix에서 스크립트에 적어도) 시스템 유틸리티입니다. 훔친 다른 이름을 지정할 수 있습니다. 또한 이것은 OP가 원했던 SSH를 거치지 않습니다. 단순히-e ssh
rsync로 전달 하면 문제가 해결됩니다.