Jump to content

Recommended Posts

Posted

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

Posted

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... 😛 )

Posted

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

Posted

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 😛

Posted

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. 😛

  • 6 months later...
Posted

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!

  • 1 month later...
Posted

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")
Posted

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!

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.