Assista a alterações no sistema de arquivos e no rsync de maneira multiplataforma com dependências mínimas

0

Gostaria de iniciar um script Ruby ou Python de longa execução e fazer com que o script assista a um diretório local para alterações em arquivos e novos arquivos. Periodicamente, o script acionará um rsync unidirecional para um local de rede remoto.

Isso deve funcionar em ambientes Linux (Ubuntu 13.10+) e Windows (Windows 7+). Importante, eu gostaria de minimizar o número de dependências necessárias, e gostaria de instalar a mesma coisa em todos os sistemas, simplesmente soltando alguns arquivos em um diretório - nenhum instalador.

É possível obter o sistema que estou descrevendo sem um instalador? Se sim, como?

    
por John Feminella 28.01.2014 / 20:54

3 respostas

1

No passado, quando eu estava fazendo isso da plataforma Windows para qualquer outro sistema que suporte um sshd ou sftp, eu usei WinSCP que possui recursos de sincronização muito bem escritos. O WinSCP também pode ser executado a partir da linha de comando para assistir a um diretório local e automaticamente enviar e / ou enviar arquivos para um sistema de arquivos remoto por meio de protocolos SCP ou SFTP.

A solução WinSCP é muito robusta e altamente configurável, mas é escrita para Windows.

Eu consegui WinSCP para instalar na minha máquina Linux usando 32 bit vinho e funciona razoavelmente bem, embora, eu não tentei executar o recurso de sincronização da CLI no linux ainda. Estou confiante que terei o CLI trabalhando no linux logo que tiver tempo de me concentrar nisso.

    
por 27.08.2015 / 17:45
0

Como uma possível solução para a primeira parte da sua pergunta, você deve dar uma olhada em inotify-tools , isso contém a ferramenta inotifywait que assiste a um diretório (ou conjunto de diretórios de forma recursiva) e gera notificações de alterações (estes podem ser restritos a certos tipos de eventos, por exemplo, criação de arquivos, exclusão, modificação etc.). Mais informações podem ser encontradas na página do manual .

Eu não estou familiarizado com programação (python ou não) em máquinas Windows, mas tem havido uma porta de inotifywait para o Windows na forma de inotify-win que, depois de ter produzido o executável, você pode presumivelmente executar a partir de um script via subprocesso com mudanças específicas de plataforma mínimas da versão do Linux.

Para a segunda parte da sua pergunta, você pode optar pelo SFTP usando paramiko , no entanto, parece que a dependência de < um href="https://www.dlitz.net/software/pycrypto/"> PyCrypto pode tornar esta opção um pouco desafiadora do ponto de vista do Windows.

Eu percebo que esta não é uma resposta completa para todas as partes da sua pergunta, mas espero que haja algo aqui que você ache útil.

    
por 06.03.2014 / 00:28
0

Eu ouvi coisas boas sobre link - uma biblioteca Python para o monitoramento de eventos do sistema de arquivos que funciona no Linux, OSX, FreeBSD e Windows.

Eu usaria algo como bbfreeze ou pyinstaller para empacotar sua ferramenta inteira em binários para as várias plataformas diferentes. O rsync já tem instaladores para a maioria dos sistemas.

    
por 22.01.2015 / 08:18