Envie um arquivo do Windows para o Unix como um agendamento noturno

1

Digamos que eu tenha um diretório comum em um servidor Windows, como: \servername\location\common . Durante o dia, qualquer usuário pode vir e adicionar / remover arquivos para esse diretório do Windows.

Como eu configuraria um agendamento noturno (sempre 9pm) para transferir todos os arquivos desse diretório para um servidor Unix em um caminho pré-definido (isso não muda)?

Não estou muito preocupado em esconder senhas, pois todos as conhecem.

  • Existe algum script bem conhecido para fazer isso?
  • Se não, alguém tem alguma dica de como eu poderia implementar isso?

Eu tenho algum conhecimento sobre arquivos .bat e shell.

    
por toop 08.02.2012 / 10:55

7 respostas

3

Eu usaria um software livre como o "AlwaySync" para enviar meus arquivos por SFTP / SSH. Ou gostaria de configurar um compartilhamento ISCSI / SMB no sistema remoto e fazer o backup dessa maneira. Ou eu instalaria o Cygwin e configuraria o rsync para fazer backup no servidor Linux em um cron.

Estes são apenas conceitos para fazer seu cérebro fluir!

    
por 08.02.2012 / 11:26
3

Isso pode ser feito usando uma tarefa do Windows e WinSCP.

Primeiro, acesse e instale o WinSCP link Uma vez instalado, clique em Novo e insira as informações para o seu servidor. Se você estiver usando chaves, localize os arquivos de chaves, caso contrário, insira a senha. Clique em salvar. Na caixa de diálogo que aparece, não deixe de marcar "Salvar senha" se não estiver usando arquivos de chave. Lembre-se do nome do perfil que você escolheu.

Em seguida, crie um arquivo config.txt no mesmo local onde você instalou o WinSCP no arquivo, insira o seguinte, substituindo o ** por itens específicos para você.

option batch on
option confirm off
open *NAME OF PROFILE* synchronize local -mirror *Local path: \servername\location\common* *Remote Path*
exit

Pressione Windows Key + R

Em seguida, digite taskschd.msc /s clique em OK. No lado direito da janela que é aberta, selecione Create Task... Digite um nome: Folder Auto Upload (ou o que mais lhe convier)

Clique na guia Triggers e, em seguida, clique em New Selecione o botão de opção Daily Haverá uma hora listada, Ajuste a hora em que você deseja que o upload aconteça. Clique em OK

Clique na guia Actions clique em New no campo Programa / script, insira o local do WinSCP.exe (ou navegue até onde você o instalou e selecione.) no campo Adicionar argumentos (opcional): insira /console /script=config.txt e clique em OK clique novamente em OK , e você deve estar pronto.

    
por 11.03.2012 / 19:49
2

Você pode instalar o putty e usar o pscp com tarefas agendadas. Se a segurança não era uma prioridade, você pode fazer o mesmo com o cliente ftp embutido no Windows.

No meu caso, eu uso putty e pscp da distribuição de ferramentas unix

Uma transferência de arquivo básica seria de um diretório inteiro seria algo como 'pscp -pw password -r "caminho / para / source /" [email protected]: / caminho / para / destination /' - há alguns problemas com essa abordagem, como ter sua senha em texto simples

Usar pagent seria uma abordagem melhor - você terá que configurá-lo , e substituir a senha -pw com -agent eu acredito.

IIRC Se você quiser usar a rota rsync deltacopy pode ser uma boa opção, ele faz backupsh incremental agendado

    
por 08.02.2012 / 12:26
1

Como você tem a coisa disponível no SMB, eu lidaria com isso do lado do Unix. Isso significa que eu configuraria um cron job (provavelmente usando uma conta de usuário não-root) que faz a transferência usando

  • rsnapshot - que é um bom utilitário de backup (e vem com instruções sobre como configurar o cron)
  • rsync - se o problema for mais sincronização de arquivos em vez de backup.
por 11.03.2012 / 09:16
1

Você pode compartilhar a pasta e o arquivo no Windows. Instale o Samba no linux monte a pasta e execute uma tarefa cron no linux para transferir os arquivos onde for necessário

    
por 11.03.2012 / 11:42
1

Se forem arquivos de texto / script, eu usaria um sistema de controle de versão, como SVN, GIT ou Mercurial. Desta forma, o servidor não estará muito carregado (somente diferenças entre os arquivos serão mantidos) e você poderá verificar facilmente as diferenças entre cada operação de sincronização e até mesmo saber quem / quando alterou qual arquivo e o que foi alterado. Você também pode adicionar comentários em cada operação de sincronização, o que é definitivamente muito útil.

    
por 12.03.2012 / 08:57
1

Na minha opinião, o rsync é o único caminho a seguir - o que você está pedindo para fazer é sincronizar um diretório em um sistema de arquivos para outro e a ferramenta para fazer isso da maneira mais confiável é o rsync. Para tentar justificar isso, eu acho que é bom olhar para a história do projeto rsync - ele foi criado em 1996, continuamente desenvolvido e usado amplamente em toda a comunidade Unix. Seu último lançamento foi em 2008 - isso significa que nos últimos 4 anos foi considerado um trabalho quase perfeito de sincronizar dois diretórios. Então a questão é como configurar isso.

Eu percebi que isso deve ser uma coisa bastante comum, então tive um rápido google e descobri uma postagem muito boa sobre estouro de pilha - . Eu já tinha em mente as etapas necessárias (que descreverei abaixo), mas o script vai além, criando arquivos de log, vários compartilhamentos, montando sistemas de arquivos desmontados etc; é realmente um ótimo roteiro. Tudo o que você precisa fazer é modificá-lo para conter os diretórios / endereço IP para compartilhamento de janelas e o destino dos arquivos e logs.

A única coisa que resta a fazer é agendar o script para ser executado às 21:00. Isso pode ser feito com o cron ou crontab - Leia o tutorial cron ou crontab se não tiver certeza de como fazer isso.

    
por 13.03.2012 / 13:32