Aquí está la pregunta: ¿hay un cliente SCP equivalente para OSX que monitoreará los cambios de un directorio y se cargará cuando se detecte? No me importa si es un cliente GUI o mediante la línea de comandos (rsync, ssh, etc.).
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
La segunda línea se ejecuta run_rsyncuna vez incondicionalmente y luego, en cada cambio en el directorio actual (o especifique la ruta exacta en lugar de .)
Necesitará fswatch: aquí se explica cómo instalar mediante brew :
brew install fswatch
Opciones de Rsync:
-a - significa "archivo" y se sincroniza recursivamente y conserva enlaces simbólicos, archivos especiales y de dispositivo, tiempos de modificación, grupo, propietario y permisos.
-z - compresión
-P - combina las banderas --progreso y --partial. El primero de estos le brinda una barra de progreso para las transferencias y el segundo le permite reanudar las transferencias interrumpidas.
Me confundiste mucho por un tiempo porque synces una utilidad del sistema (al menos en cada * nix que he visto; no estoy seguro acerca de OSX, pero no veo ninguna razón por la que no estaría allí). Es posible que desee darle a su recortado un nombre diferente. Además, esto no pasa por SSH, que el OP quería; simplemente pasar -e ssha rsync debería arreglar eso.
un CVn
@ MichaelKjörling: +1: corregido, ¡gracias por avisar!
Daniel
No entiendo tus exclusiones, ¿podrías explicarlas?
peedee
1
Puede usar launchd en lugar de acciones de carpeta (para obtener un código de muestra, solo google para: launchd folder watcher).
Luego, puede combinar su elemento de carpeta de inicio con un script scp similar a este .
Una de mis características favoritas, que algunas personas pueden no conocer, cuando abre un documento en una determinada aplicación en Transmitir (digamos un archivo .html en BBEdit), luego edite el documento y guárdelo; Transmitir automáticamente lo carga de nuevo al servidor en el mismo archivo, sin hacer preguntas. Funciona de maravilla al hacer sitios web y editar CSS. También es conveniente hacer pequeñas correcciones en las imágenes a través de Photoshop. También puede manejar cómo Transmitir maneja ciertas extensiones de archivo a través de Prefs.
He investigado Transmitir, desafortunadamente no admite SCP, solo conexiones SFTP. Además, Transmitir se niega a abrir mis archivos de clave privada.
pygorex1
Esta característica es algo diferente. Simplemente significa que puede editar archivos directamente desde el servidor remoto utilizando el editor que elija. Otros programas FTP también admiten esto.
Daniel Beck
0
Me he encontrado con un script de ruby que hace lo que necesitas, pero requerirá un poco de adaptación.
Descripción:
rsync cada vez que el directorio en el que se encuentra el script cambia con la API FSEvents de OS X
https://gist.github.com/149491
Bueno, tuve el mismo tipo de problema y es posible usarlos juntos: rsync, SSH Passwordless Login, Watchdog (una utilidad de sincronización de Python) y Terminal Notifier (una utilidad de notificación OS X hecha con Ruby. No es necesario, pero ayuda a saber cuando la sincronización ha terminado).
Creé la clave para iniciar sesión sin contraseña utilizando este tutorial de Dreamhost wiki: http://cl.ly/MIw5
1.1. Cuando termine, pruebe si todo está bien ... si no puede iniciar sesión sin contraseña, tal vez tenga que probar afp mount. Dreamhost (donde está mi sitio) no permite el montaje afp, pero permite el inicio de sesión sin contraseña. En la terminal, escriba:
ssh [email protected]
Debe iniciar sesión sin que se le pidan contraseñas: P
Instalé el Terminal Notifier desde la página de Github: http://cl.ly/MJ5x
2.1. Usé el comando de instalación de Gem. En Terminal, escriba:
gem install terminal-notifier
2.3. Comprueba si la notificación funciona. En Terminal, escribe:
terminal-notifier -message "Starting sync"
Cree un script sh para probar la notificación rsync +. Guárdalo donde quieras, con el nombre que quieras. En este ejemplo, lo llamaré ~ / Scripts / sync.sh Usé la extensión ".sh, pero no sé si es necesario.
3.1. Recuerde dar permiso de ejecución a este script sh. En Terminal, escriba:
sudo chmod 777 ~/Scripts/sync.sh
3.2. Ejecute el script y verifique si los mensajes se muestran correctamente y el rsync realmente sincroniza su carpeta local con la carpeta remota.
Finalmente, descargué e instalé Watchdog desde la página de Github: http://cl.ly/MJfb
4.1. Primero, instalé la dependencia libyaml usando Brew (hay mucha ayuda sobre cómo instalar Brew, como una "aptitud" para OS X). En Terminal, escriba:
brew install libyaml
4.2. Luego, utilicé el "comando easy_install". Vaya a la carpeta de Watchdog y escriba Terminal:
easy_install watchdog
¡Ahora todo está instalado! Vaya a la carpeta que desea sincronizar , cambie este código a sus necesidades y escriba Terminal:
Tiene que ser EXACTAMENTE de esta manera, con las barras y los saltos de línea, por lo que tendrá que copiar estas líneas en un editor de texto, cambiar el script, pegar en la terminal y presionar Intro.
Lo intenté sin saltos de línea, ¡y no funciona!
En mi Mac, siempre recibo un error, pero no parece afectar nada:
/Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.
Ahora, hizo algunos cambios en un archivo dentro de la carpeta, ¡y mira la magia!
sync
es una utilidad del sistema (al menos en cada * nix que he visto; no estoy seguro acerca de OSX, pero no veo ninguna razón por la que no estaría allí). Es posible que desee darle a su recortado un nombre diferente. Además, esto no pasa por SSH, que el OP quería; simplemente pasar-e ssh
a rsync debería arreglar eso.Puede usar launchd en lugar de acciones de carpeta (para obtener un código de muestra, solo google para: launchd folder watcher).
Luego, puede combinar su elemento de carpeta de inicio con un script scp similar a este .
O use rsync sobre ssh de esta manera:
Para una solución comercial de software multiplataforma, vea GoodSync .
fuente
Echa un vistazo a Transmit by Panic. De una de sus publicaciones de blog , un comentarista dijo:
fuente
Me he encontrado con un script de ruby que hace lo que necesitas, pero requerirá un poco de adaptación.
Descripción:
rsync cada vez que el directorio en el que se encuentra el script cambia con la API FSEvents de OS X https://gist.github.com/149491
fuente
Bueno, tuve el mismo tipo de problema y es posible usarlos juntos: rsync, SSH Passwordless Login, Watchdog (una utilidad de sincronización de Python) y Terminal Notifier (una utilidad de notificación OS X hecha con Ruby. No es necesario, pero ayuda a saber cuando la sincronización ha terminado).
Creé la clave para iniciar sesión sin contraseña utilizando este tutorial de Dreamhost wiki: http://cl.ly/MIw5
1.1. Cuando termine, pruebe si todo está bien ... si no puede iniciar sesión sin contraseña, tal vez tenga que probar afp mount. Dreamhost (donde está mi sitio) no permite el montaje afp, pero permite el inicio de sesión sin contraseña. En la terminal, escriba:
ssh [email protected]
Debe iniciar sesión sin que se le pidan contraseñas: PInstalé el Terminal Notifier desde la página de Github: http://cl.ly/MJ5x
2.1. Usé el comando de instalación de Gem. En Terminal, escriba:
gem install terminal-notifier
2.3. Comprueba si la notificación funciona. En Terminal, escribe:
terminal-notifier -message "Starting sync"
Cree un script sh para probar la notificación rsync +. Guárdalo donde quieras, con el nombre que quieras. En este ejemplo, lo llamaré ~ / Scripts / sync.sh Usé la extensión ".sh, pero no sé si es necesario.
#!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ [email protected]:site_folder/ terminal-notifier -message "Sync has finished"
3.1. Recuerde dar permiso de ejecución a este script sh. En Terminal, escriba:
sudo chmod 777 ~/Scripts/sync.sh
3.2. Ejecute el script y verifique si los mensajes se muestran correctamente y el rsync realmente sincroniza su carpeta local con la carpeta remota.Finalmente, descargué e instalé Watchdog desde la página de Github: http://cl.ly/MJfb
4.1. Primero, instalé la dependencia libyaml usando Brew (hay mucha ayuda sobre cómo instalar Brew, como una "aptitud" para OS X). En Terminal, escriba:
brew install libyaml
4.2. Luego, utilicé el "comando easy_install". Vaya a la carpeta de Watchdog y escriba Terminal:
easy_install watchdog
¡Ahora todo está instalado! Vaya a la carpeta que desea sincronizar , cambie este código a sus necesidades y escriba Terminal:
Tiene que ser EXACTAMENTE de esta manera, con las barras y los saltos de línea, por lo que tendrá que copiar estas líneas en un editor de texto, cambiar el script, pegar en la terminal y presionar Intro.
Lo intenté sin saltos de línea, ¡y no funciona!
En mi Mac, siempre recibo un error, pero no parece afectar nada:
/Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.
Ahora, hizo algunos cambios en un archivo dentro de la carpeta, ¡y mira la magia!
fuente