Triton Posted July 17, 2006 at 10:38 PM Report #38755 Posted July 17, 2006 at 10:38 PM E aqui fica um pequeno script em Python que faz um backup automático em zip ou tar de directórios especificados pelo user! Também suporta uma adição de um comment. Este código provém na maior parte do livro Byte of Python que explica o seu funcionamente na totalidade! Fiquem bem! 🙂 #!/usr/bin/python import os, time source = ['/home/triton/data', '/home/triton/bin'] # Se estas em Windows, usa antes source = [r'C:\Documentos', r'D:\Trabalhos'] ou uma coisa do genero target_dir = '/mnt/e/backup/' # Pasta de destino today = target_dir + time.strftime('%Y%m%d') now = time.strftime('%H%M%S') comment = raw_input('Enter a comment --> ') if len(comment) == 0: target = today + os.sep + now + '.zip' else: target = today + os.sep + now + '_' + \ comment.replace(' ', '_') + '.zip' if not os.path.exists(today): os.mkdir(today) # make directory print 'Successfully created directory', today zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) #se preferirem tar tirem o comment da proxima linha #tar = 'tar -cvzf %s %s -X /home/triton/excludes.txt' % (target, ' '.join(srcdir)) if os.system(zip_command) == 0: print 'Successful backup to', target else: print 'Backup FAILED' <3 life
UnKnowN Posted July 18, 2006 at 09:23 AM Report #38805 Posted July 18, 2006 at 09:23 AM Muito Bom Trabalho Mesmo sendo a maior parte retirada desse livro "Byte of Python" 😛
PaLobo Posted July 18, 2006 at 09:50 AM Report #38811 Posted July 18, 2006 at 09:50 AM Muito fixe. Já estás mais à vontade com o python e realmente é possível fazer coisas interessantes. 😛 http://s4.bitefight.com.pt/c.php?uid=20666
PaLobo Posted July 18, 2006 at 02:57 PM Report #38862 Posted July 18, 2006 at 02:57 PM Seria porreiro alterar esse script de forma a que aceitasse um argumento para se defenir se queremos fazer backup do default ou de outra pasta qualquer... Eu explico melhor: Ao correr o script, caso coloques um argumento do estilo :~$python backup.py -xpto import sys, os, time ... if sys.argv == xpto #sys.argv tem a lista de argumentos passados pela linha de commandos pasta=raw_input('Indique a pasta pretendida:') ... else ... script com as pastas defenidas por default. Acho que o script assim seria bastante mais versátil. Caso queiras dá uma vista de olhas aqui Por muito tentado que me sinto em experimentar alterar o script, tenho que me dedicar a PHP por uns tempos devido a um projecto que surgiu de repente. Só depois poderei voltar para python. (Mas confesso que já tenho algumas saudades de fazer experiências com python. hehe... 😛 ) http://s4.bitefight.com.pt/c.php?uid=20666
Triton Posted July 18, 2006 at 03:32 PM Author Report #38872 Posted July 18, 2006 at 03:32 PM Sim, tens toda a razão. Torna o script mais versátil... o que quero fazer é depois arranjar um GUI todo bonitinho para a aplicação! ARGHHh, passaste para o PHP side 😛 Boa sorte, também tenho andado a aprofundar XHTML e CSS. Boa sorte! <3 life
PaLobo Posted July 18, 2006 at 03:35 PM Report #38874 Posted July 18, 2006 at 03:35 PM ARGHHh, passaste para o PHP side 👍 ... Passei por pouco tempo. 😛 Não desisti do python! Especialmente depois de ver algures uma forma de passar os scripts e batch files manhosos que tenho nos servers para python. 😁 http://s4.bitefight.com.pt/c.php?uid=20666
UnKnowN Posted July 18, 2006 at 05:29 PM Report #38891 Posted July 18, 2006 at 05:29 PM PaLoBo pelo que me parece do code do triton ele fez aquele code para backup de uma pasta percisa, ou seja se tu quisesses outra tinhas de modifcar no code 😁 Mas ya, se quisesses fazer uma cena mais 'user-friendly' era com a escolha do freguês 👍 Boa Sugestão 😛
PaLobo Posted July 18, 2006 at 05:53 PM Report #38896 Posted July 18, 2006 at 05:53 PM O script como está está porreiro. Ele pode ter as duas opções. O script pode fazer backup de uma pasta especifica, mas imagina que quisesse fazer backup de uma pen drive, passava um argumento e voilá... Não deve ser muito dificil modificar. O script pode ficar essencialmente como está, teria apenas que colocar uma condição para testar se havia ou não argumentos, validar os argumentos e depois pedir ao user a pasta desejada... Se me fartar um pouco de PHP tento ver isso. 😛 http://s4.bitefight.com.pt/c.php?uid=20666
Triton Posted July 18, 2006 at 07:11 PM Author Report #38925 Posted July 18, 2006 at 07:11 PM Se tiver tempo hoje à noite, já trato disso! 😛 <3 life
LuRsT Posted February 13, 2007 at 03:01 PM Report #82532 Posted February 13, 2007 at 03:01 PM Épa, Triton eu precisava de um script desses mas era para o servidor que montei aqui na loja, que tá em linux! Vou ver se fasso isso versão linux 👍 É nisto que dá nao ler o código antes de postar... BotNet: The Game Tudo Sobre Formigas
LuRsT Posted February 13, 2007 at 03:45 PM Report #82536 Posted February 13, 2007 at 03:45 PM Hey tive a dar uma olhada no código e ele podia ser melhorado desta maneira: #!/usr/bin/python import os, time print """ MENU: 0 - Default ou Número de pastas a adicionar """ input = raw_input("Escolha a opcao: ") counter = 0 if input == 0 source = ['/home/triton/data', '/home/triton/bin'] # Se estas em Windows, usa antes source = [r'C:\Documentos', r'D:\Trabalhos'] ou uma coisa do genero else while counter <= input #Aqui colocar um input para adicionar pastas #Insira pasta 1: #Insira pasta 2: counter = counter + 1 target_dir = '/mnt/e/backup/' # Pasta de destino today = target_dir + time.strftime('%Y%m%d') now = time.strftime('%H%M%S') comment = raw_input('Enter a comment --> ') if len(comment) == 0: target = today + os.sep + now + '.zip' else: target = today + os.sep + now + '_' + \ comment.replace(' ', '_') + '.zip' if not os.path.exists(today): os.mkdir(today) # make directory print 'Successfully created directory', today zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) #se prefirem tar tirem o comment da proxima linha #tar = 'tar -cvzf %s %s -X /home/triton/excludes.txt' % (target, ' '.join(srcdir)) if os.system(zip_command) == 0: print 'Successful backup to', target else: print 'Backup FAILED' E depois daquele while ele fazer uma verificação com o os.path para saber se todos os ficheiros existem! BotNet: The Game Tudo Sobre Formigas
LuRsT Posted April 5, 2007 at 10:08 AM Report #92107 Posted April 5, 2007 at 10:08 AM Criei uma versão simplificada do programa para windows, já que o teu script (a mim) dava erros principalmente por causa do comando zip. Este script apenas copia ficheiros para uma pasta com a data , nada de comentarios nem compressão. import os, time #Só para dar a sencação de contolo input = raw_input("Iniciar: ") #De onde vem os ficheiros source = "C:\\teste" today = time.strftime('%Y%m%d') #Pasta onde irão ser gravados os ficheiros target = "C:\Backup\Backup" + today if not os.path.exists(target): os.mkdir(target) # make directory print 'Foi criada a pasta ', target copy_command = "copy %s %s" % (source, target) if os.system(copy_command) == 0: print 'Backup bem sucedido na pasta ', target else: print 'Backup Falhou' #Para poder ver o que está mal caso dê erro print copy_command #Para poder ver os resultados na linha de comandos raw_input("Fim") BotNet: The Game Tudo Sobre Formigas
djthyrax Posted April 5, 2007 at 01:47 PM Report #92142 Posted April 5, 2007 at 01:47 PM Uma coisa LuRsT, ou fazes escape correcto das \, ou usas /. 😉 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
LuRsT Posted April 6, 2007 at 11:35 AM Report #92238 Posted April 6, 2007 at 11:35 AM Mas djthyrax, esse script não me deu erros e é muito estranho usar \ para o windows. Como fazer o escape correcto? BotNet: The Game Tudo Sobre Formigas
djthyrax Posted April 6, 2007 at 12:14 PM Report #92257 Posted April 6, 2007 at 12:14 PM Eu tava a falar desta linha: target = "C:\Backup\Backup" + today Tu deverias usar: target = "C:\\Backup\\Backup" + today ou target = "C:/Backup/Backup" + today Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Triton Posted April 6, 2007 at 03:16 PM Author Report #92288 Posted April 6, 2007 at 03:16 PM Eu tava a falar desta linha: target = "C:\Backup\Backup" + today Tu deverias usar: target = "C:\\Backup\\Backup" + today ou target = "C:/Backup/Backup" + today Ou então simplesmente target = r"C:\caminho\para\a\pasta". <3 life
LuRsT Posted April 9, 2007 at 07:55 AM Report #92602 Posted April 9, 2007 at 07:55 AM Ha ok, com o duplo \ ou o / BotNet: The Game Tudo Sobre Formigas
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now