OSX SSH rsync - Mantenha o diretório remoto atualizado

7

Eu venho principalmente de um plano de fundo do Windows, migrando para o Mac. Eu usei o WinSCP e adorei um recurso chamado "Manter o Diretório Remoto atualizado" .

Aqui está a pergunta: existe um cliente SCP equivalente para o OSX que irá monitorar um diretório para alterações e upload quando detectado? Eu não me importo se é um cliente GUI ou via linha de comando (rsync, ssh, etc).

    
por pygorex1 12.01.2011 / 02:51

6 respostas

0

Sua melhor aposta é provavelmente usar Ações de pasta e adaptando o script de novo item de alerta às suas necessidades, emitindo um ligue para o utilitário de linha de comando de sua escolha.

    
por 12.01.2011 / 06:41
5
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

A segunda linha executa run_rsync uma vez incondicionalmente e depois - em cada alteração no diretório atual (ou especifica o caminho exato em vez de . )

Você precisará do fswatch - aqui está como instalar via bebida :

brew install fswatch

Opções de rsync:

  • -a - significa "arquivar" e sincroniza recursivamente e preserva links simbólicos, arquivos especiais e de dispositivo, horários de modificação, grupo, proprietário e permissões.
  • -z - compactação
  • -P - combina as flags --progress e --partial. A primeira delas fornece uma barra de progresso para as transferências e a segunda permite que você retome as transferências interrompidas
  • - exclude - exclui arquivos por padrão
por 17.08.2016 / 14:49
1

Você pode usar o launchd em vez das ações de pasta (para obter um código de exemplo apenas no google para: launchd folder watcher).

Você pode então combinar o item launcher folder watcher com um script scp similar a este aqui .

Ou use o rsync sobre o ssh da seguinte forma:

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

Para uma solução comercial de software multiplataforma, consulte GoodSync .

    
por 25.02.2011 / 15:40
0

Confira Transmitir da Panic. De um de seus posts no blog , um comentarista disse:

One of my favorite features, that some people may not know, when you open a document into a certain application in Transmit (let’s say an .html file into BBEdit) then edit the document and Save it; Transmit automatically uploads it back to the server to the same file, no questions asked. It works wonders when making websites and editing CSS. Also convenient to make small corrections in images through Photoshop. You can also handle how Transmit deals with certain file extensions through the Prefs.

    
por 12.01.2011 / 03:12
0

Eu me deparei com um script ruby que faz o que você precisa, mas vai demorar um pouco de adaptação.

Descrição:
rsync sempre que o diretório do script está em mudanças usando a API do OS X FSEvents link

    
por 10.02.2011 / 18:05
0
Bem, eu tive o mesmo tipo de problema e é possível usá-los juntos: rsync, SSH Passwordless Login, Watchdog (um utilitário de sincronização do Python) e Terminal Notifier (um utilitário de notificação do OS X feito com Ruby. Não necessário, mas ajuda a saber quando a sincronização terminou).

  1. Eu criei a chave para Passwordless Login usando este tutorial do wiki da Dreamhost: link

    1.1. Quando terminar, teste se está tudo bem ... se você não pode Login Passwordless, talvez você tenha que tentar afp mount. Dreamhost (onde meu site é) não permite afp mount, mas permite login sem senha. No terminal, digite:

    ssh [email protected]   Você deve fazer o login sem que as senhas sejam perguntadas: P

  2. Eu instalei o Notificador de terminal da página do Github: link

    2.1. Eu usei o comando do instalador do Gem. No Terminal, digite:

    gem install terminal-notifier

    2.3. Teste se a notificação funciona.No Terminal, digite:

    terminal-notifier -message "Starting sync"

  3. Crie um script sh para testar o rsync + notification. Salve-o em qualquer lugar que você gosta, com o nome que você gosta. Neste exemplo, eu vou chamá-lo de ~ / Scripts / sync.sh Eu usei a extensão ".sh, mas não sei se é necessário.

    #!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ [email protected]:site_folder/ terminal-notifier -message "Sync has finished"

    3.1. Lembre-se de dar permissão de execução para este script sh. No Terminal, digite:

    sudo chmod 777 ~/Scripts/sync.sh  3.2. Execute o script e verifique se as mensagens são exibidas corretamente e o rsync realmente sincroniza sua pasta local com a pasta remota.

  4. Por fim, baixei e instalei o Watchdog da página do Github: link

    4.1. Primeiro, eu instalei a dependência da libyaml usando Brew (há muita ajuda sobre como instalar o Brew - como uma "aptidão" para o OS X). No Terminal, digite:

    brew install libyaml

    4.2. Então, eu usei o "comando easy_install". Vá na pasta do Watchdog e digite Terminal:

    easy_install watchdog

  5. Agora, tudo está instalado! Aceda à pasta que pretende sincronizar , altere este código para as suas necessidades e digite Terminal:

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

    Tem que ser EXATAMENTE dessa forma, com barras e quebras de linha, então você terá que copiar essas linhas para um editor de texto, alterar o script, colar no terminal e pressionar return.

    Eu tentei sem as quebras de linha e não funciona!

    No meu Mac, sempre recebo um erro, mas não parece afetar 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.

    Agora, fiz algumas alterações em um arquivo dentro da pasta e observe a mágica!

por 21.01.2013 / 10:17