Backup em CD
Caros colegas. estou precisando fazer uma rotina para realizar backup em cd.
dei uma procurada no forum e vi um post bem legal:
http://forum.clubedelphi.net/viewtopic.php?t=50462&highlight=backup
- ai fala algo sobre usar o InCD. Entao o que fiz foi o seguinte:
1. instalei o InCd 4
2. criei um código para compactar meu banco e em seguida copia-lo para o Cd.
- O problema é que o sistema nao copia para o CD. vou colar o código aqui e quem puder me auxiliar na questão agradeço
uses
ShellApi
dei uma procurada no forum e vi um post bem legal:
http://forum.clubedelphi.net/viewtopic.php?t=50462&highlight=backup
- ai fala algo sobre usar o InCD. Entao o que fiz foi o seguinte:
1. instalei o InCd 4
2. criei um código para compactar meu banco e em seguida copia-lo para o Cd.
- O problema é que o sistema nao copia para o CD. vou colar o código aqui e quem puder me auxiliar na questão agradeço
uses
ShellApi
procedure TBackup.IniciarBackupClick(Sender: TObject); var sl: TStringList; //compactação do arquivo NewFileName: string; //compactação do arquivo Dados: TSHFileOpStruct; // copia do arquivo para cd begin Memo1.Lines.Add(´Compactando o arquivo...´); if not assigned(fzip) then begin sl := TStringList.Create; NewFileName := ExtractFilePath(Application.ExeName); try sl.Add(NewFileName+´\ADM.FDB´); fzip := TZipThread.Create(´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´,sl,Memo1,false); finally sl.Free; end; Memo1.Lines.Add(´Arquivo Compactado...´); end; Memo1.Lines.Add(´Copiando o arquivo para o Cd...´); FillChar(Dados,SizeOf(Dados), 0); with Dados do begin NewFileName := ExtractFilePath(Application.ExeName); wFunc := FO_COPY; pFrom := PChar(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´); pTo := PChar(DRIVE_CDROM); fFlags:= FOF_ALLOWUNDO; end; SHFileOperation(Dados); Memo1.Lines.Add(´Backup realizado com sucesso...´); end;
Mahdak
Curtidas 0
Respostas
Lindomar.des
20/01/2006
colega,
uso um método parecido com o seu, só q p/ copiar p o cd uso a instrução:
CopyFile(Path1 + sBackup, Path2 + sBackup);
uso um cd-rw e pelo incd mando formatar e funciona blz.
Lindomar
uso um método parecido com o seu, só q p/ copiar p o cd uso a instrução:
CopyFile(Path1 + sBackup, Path2 + sBackup);
uso um cd-rw e pelo incd mando formatar e funciona blz.
Lindomar
GOSTEI 0
Mahdak
20/01/2006
colega,
uso um método parecido com o seu, só q p/ copiar p o cd uso a instrução:
CopyFile(Path1 + sBackup, Path2 + sBackup);
uso um cd-rw e pelo incd mando formatar e funciona blz.
Lindomar
Lindomar, seguindo sua sugestão fiz isso:
Memo1.Lines.Add(´Copiando o arquivo para o Cd...´); NewFileName := ExtractFilePath(Application.ExeName); CopyFile(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´, DRIVE_CDROM+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´,True); Memo1.Lines.Add(´Backup realizado com sucesso...´);
o erro gerado foi o seguinte:
[Error] Unit_Bkp.pas(93): Incompatible types: ´String´ and ´PAnsiChar´
alguma sugestão?
GOSTEI 0
Lindomar.des
20/01/2006
mahdak,
qual o tipo da variavel/constante de: DRIVE_CDROM
Lindomar.
qual o tipo da variavel/constante de: DRIVE_CDROM
Lindomar.
GOSTEI 0
Christian_adriano
20/01/2006
Mahdak,
Use o código assim:
E não esqueça que para funcionar o InCD precisa ser um CD-RW formatado (pelo InCD).
Espero ter ajudado.
[]´s.
Use o código assim:
Memo1.Lines.Add(´Copiando o arquivo para o Cd...´); NewFileName := ExtractFilePath(Application.ExeName); CopyFile(PChar(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´, DRIVE_CDROM+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´),True); Memo1.Lines.Add(´Backup realizado com sucesso...´);
E não esqueça que para funcionar o InCD precisa ser um CD-RW formatado (pelo InCD).
Espero ter ajudado.
[]´s.
GOSTEI 0
Edilcimar
20/01/2006
Eu faço a cópia através do incd e o winzip, basta apenas uma única linha
If RadioGroup1.ItemIndex = 0 then
Caminho := ´D:\´
Else If RadioGroup1.ItemIndex = 1 then
Caminho := ´E:\´
Else If RadioGroup1.ItemIndex = 2 then
Caminho := ´F:\´
Else If RadioGroup1.ItemIndex = 3 then
Caminho := ´G:\´
Else If RadioGroup1.ItemIndex = 4 then
Caminho := ´H:\´
Else
Caminho := ´I:\´;
Dia := Copy(DateToStr(Date),1,2);
Caminho := Caminho + Dia +´\´;
If not DirectoryExists(Caminho) then
If not CreateDir(Caminho) then
Raise Exception(´Não foi possível criar o diretório ´ + Caminho);
If DirectoryExists(Caminho) then
Begin
Caminho := Caminho + ´NomeDoArquivoDeBackup´;
WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -a -p ´´+Caminho+´´ ´+ ´´´ + ´*.*´+ ´´´),1);
End;
If RadioGroup1.ItemIndex = 0 then
Caminho := ´D:\´
Else If RadioGroup1.ItemIndex = 1 then
Caminho := ´E:\´
Else If RadioGroup1.ItemIndex = 2 then
Caminho := ´F:\´
Else If RadioGroup1.ItemIndex = 3 then
Caminho := ´G:\´
Else If RadioGroup1.ItemIndex = 4 then
Caminho := ´H:\´
Else
Caminho := ´I:\´;
Dia := Copy(DateToStr(Date),1,2);
Caminho := Caminho + Dia +´\´;
If not DirectoryExists(Caminho) then
If not CreateDir(Caminho) then
Raise Exception(´Não foi possível criar o diretório ´ + Caminho);
If DirectoryExists(Caminho) then
Begin
Caminho := Caminho + ´NomeDoArquivoDeBackup´;
WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -a -p ´´+Caminho+´´ ´+ ´´´ + ´*.*´+ ´´´),1);
End;
GOSTEI 0
Thiagopedro
20/01/2006
Colegas, tenho utilizando Magic CD Burner.
Muito bom por sinal. Em meados de 6 meses nunca tive nenhum problema.
Tanto gravo cd... qto dvd...
Quem quiser me contacte pelo msn.
msn: thiago@amenezes.com.br
Muito bom por sinal. Em meados de 6 meses nunca tive nenhum problema.
Tanto gravo cd... qto dvd...
Quem quiser me contacte pelo msn.
msn: thiago@amenezes.com.br
GOSTEI 0
Mahdak
20/01/2006
Mahdak,
Use o código assim:
E não esqueça que para funcionar o InCD precisa ser um CD-RW formatado (pelo InCD).
Espero ter ajudado.
[]´s.
Memo1.Lines.Add(´Copiando o arquivo para o Cd...´); NewFileName := ExtractFilePath(Application.ExeName); CopyFile(PChar(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´, DRIVE_CDROM+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´),True); Memo1.Lines.Add(´Backup realizado com sucesso...´);
cristian, desse jeito ai nao deu nao. o problema com a conversao de variavel é só com o ´DRIVE_CDROM´ entao tentei o seguinte:
CopyFile(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´, PChar(DRIVE_CDROM+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´)),True);
e mesmo assim houve erro na conversao:
[Error] Unit_Bkp.pas(97): Incompatible types: ´String´ and ´PAnsiChar´
como eu poderia converter essa String em PAnsiChar??
GOSTEI 0
Mahdak
20/01/2006
Eu faço a cópia através do incd e o winzip, basta apenas uma única linha
If RadioGroup1.ItemIndex = 0 then
Caminho := ´D:\´
Else If RadioGroup1.ItemIndex = 1 then
Caminho := ´E:\´
Else If RadioGroup1.ItemIndex = 2 then
Caminho := ´F:\´
Else If RadioGroup1.ItemIndex = 3 then
Caminho := ´G:\´
Else If RadioGroup1.ItemIndex = 4 then
Caminho := ´H:\´
Else
Caminho := ´I:\´;
Dia := Copy(DateToStr(Date),1,2);
Caminho := Caminho + Dia +´\´;
If not DirectoryExists(Caminho) then
If not CreateDir(Caminho) then
Raise Exception(´Não foi possível criar o diretório ´ + Caminho);
If DirectoryExists(Caminho) then
Begin
Caminho := Caminho + ´NomeDoArquivoDeBackup´;
WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -a -p ´´+Caminho+´´ ´+ ´´´ + ´*.*´+ ´´´),1);
End;
edilcimar, explica essa linha por favor que ficou meio confuso:
WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -min -a -p ´´+Caminho+´´ ´+ ´´´ + ´*.*´+ ´´´),1);
abraços...
GOSTEI 0
Edilcimar
20/01/2006
eu peguei uma variável chamada caminho, tipo string e fui incrementando a mesma, primeiro ela é a letra onde está o cd, depois ela passa a ser a letra do cd + o dia do mes, e depois é verificado se o diretório existe, se não existir então é criado depois é acrescentado o nome do arquivo de backup e finalmente, na linha onde perguntou é utilizado o winexec(), onde estão colocados o diretório padrão onde é instalado o winzip com os comandos para criação do arquivo (-min, -a, -p), a variável caminho, e que é para copiar todos os arquivos (*.*). O incd eu uso para formatar um cd-rw.
GOSTEI 0
Mahdak
20/01/2006
eu peguei uma variável chamada caminho, tipo string e fui incrementando a mesma, primeiro ela é a letra onde está o cd, depois ela passa a ser a letra do cd + o dia do mes, e depois é verificado se o diretório existe, se não existir então é criado depois é acrescentado o nome do arquivo de backup e finalmente, na linha onde perguntou é utilizado o winexec(), onde estão colocados o diretório padrão onde é instalado o winzip com os comandos para criação do arquivo (-min, -a, -p), a variável caminho, e que é para copiar todos os arquivos (*.*). O incd eu uso para formatar um cd-rw.
Edilcimar, gostei da sua idéia, ela eh simples e direta, porem enfrento mais um probleminha...
no código abaixo eu fasso:
1. primeiro compacto o banco com o Zip master
2. depois mando copiar para um Cd formatado com o InCd 4 da maneira que voce sugeriu...
- O problema é que ele cria a pasta no cd faz o backup no hd como eu determinei, porem nao copia o backup do HD para a pasta criada no cd...
procedure TBackup.Iniciar_BackupClick(Sender: TObject); var caminho, dia, NewFileName : string; sl: TStringList; //compactação do arquivo begin If RadioGroup1.ItemIndex = 0 then Caminho := ´D:\´ Else If RadioGroup1.ItemIndex = 1 then Caminho := ´E:\´ Else If RadioGroup1.ItemIndex = 2 then Caminho := ´F:\´ Else If RadioGroup1.ItemIndex = 3 then Caminho := ´G:\´ Else If RadioGroup1.ItemIndex = 4 then Caminho := ´H:\´ Else Caminho := ´I:\´; Dia := Copy(DateToStr(Date),1,2); Caminho := Caminho + Dia +´\´; If not DirectoryExists(Caminho) then If not CreateDir(Caminho) then Raise Exception(´Não foi possível criar o diretório ´ + Caminho); If DirectoryExists(Caminho) then Begin Memo1.Lines.Clear; Memo1.Lines.Add(´Compactando o arquivo...´); if not assigned(fzip) then begin sl := TStringList.Create; NewFileName := ExtractFilePath(Application.ExeName); try sl.Add(NewFileName+´\ADM.FDB´); fzip := TZipThread.Create(´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´,sl,Memo1,false); finally sl.Free; end; Memo1.Lines.Add(´Arquivo Compactado...´); end; Memo1.Lines.Add(´Copiando arquivo(s) para o CD...´); NewFileName := ExtractFilePath(Application.ExeName)+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´; Caminho := Caminho + NewFileName; WinExec(PChar(Caminho),1); Memo1.Lines.Add(´backup realizado com sucesso!´); End; end;
GOSTEI 0
Edilcimar
20/01/2006
Eu não faça o backup e depois copio para o cd, eu já faço o backup direto no cd dentro do diretório do dia do mês!
Eu não conheço o zip master, portanto não posso opinar na maneira de utilizá-lo, mas se quer criar o backup no hd e depois enviá-lo para o cd vc vai ter um problema pois o zipador pode estar criando o backup e então o comando de copiar o arquivo para o cd pode não funcionar pois o mesmo ainda não existe
Eu não conheço o zip master, portanto não posso opinar na maneira de utilizá-lo, mas se quer criar o backup no hd e depois enviá-lo para o cd vc vai ter um problema pois o zipador pode estar criando o backup e então o comando de copiar o arquivo para o cd pode não funcionar pois o mesmo ainda não existe
GOSTEI 0
Lindomar.des
20/01/2006
mahdak,
vou tentar descrever como faço o backup no meu sistema.
1-tenho um prog. q fica rodando em background, tb tem um trayicon.
2-configuro o programa p/ fazer backup de tempos em tempos - atualmente uso 120 minudos (2 em 2 horas)
3-primeiro faço o backup utilizando o comp. da paleta Interbase Admin :
TIBBackupService.
4-Depois desse backup realizado compacto o arquivo GBK gerado para
diminuir ainda mais o tam. do arquivo. Tb utilizo o zipmaster para
compactar. Só para ter uma ideia um arq. de 650MB cai +- p/ 35/40MB
5-toda essa operação faço no HD. Meu programa tem opção para fazer
backup em 2 locais. Qdo o cliente de gravador, que é altamente recomendado, configuro um backup no HD e outro no CD.
6-depois de feito o backup no HD apenas copio o arq. gerado p/ o CD.
Dessa forma fica uma operação mais rápida. Lembrando que a copia
para o CD só é realizada após o término do backup no HD.
como ficaria meio confuso postar todo o código aki no fórum se quiser posso enviar p/ vc dar uma olhada.
vou tentar descrever como faço o backup no meu sistema.
1-tenho um prog. q fica rodando em background, tb tem um trayicon.
2-configuro o programa p/ fazer backup de tempos em tempos - atualmente uso 120 minudos (2 em 2 horas)
3-primeiro faço o backup utilizando o comp. da paleta Interbase Admin :
TIBBackupService.
4-Depois desse backup realizado compacto o arquivo GBK gerado para
diminuir ainda mais o tam. do arquivo. Tb utilizo o zipmaster para
compactar. Só para ter uma ideia um arq. de 650MB cai +- p/ 35/40MB
5-toda essa operação faço no HD. Meu programa tem opção para fazer
backup em 2 locais. Qdo o cliente de gravador, que é altamente recomendado, configuro um backup no HD e outro no CD.
6-depois de feito o backup no HD apenas copio o arq. gerado p/ o CD.
Dessa forma fica uma operação mais rápida. Lembrando que a copia
para o CD só é realizada após o término do backup no HD.
como ficaria meio confuso postar todo o código aki no fórum se quiser posso enviar p/ vc dar uma olhada.
GOSTEI 0
Mahdak
20/01/2006
mahdak,
vou tentar descrever como faço o backup no meu sistema.
1-tenho um prog. q fica rodando em background, tb tem um trayicon.
2-configuro o programa p/ fazer backup de tempos em tempos - atualmente uso 120 minudos (2 em 2 horas)
3-primeiro faço o backup utilizando o comp. da paleta Interbase Admin :
TIBBackupService.
4-Depois desse backup realizado compacto o arquivo GBK gerado para
diminuir ainda mais o tam. do arquivo. Tb utilizo o zipmaster para
compactar. Só para ter uma ideia um arq. de 650MB cai +- p/ 35/40MB
5-toda essa operação faço no HD. Meu programa tem opção para fazer
backup em 2 locais. Qdo o cliente de gravador, que é altamente recomendado, configuro um backup no HD e outro no CD.
6-depois de feito o backup no HD apenas copio o arq. gerado p/ o CD.
Dessa forma fica uma operação mais rápida. Lembrando que a copia
para o CD só é realizada após o término do backup no HD.
como ficaria meio confuso postar todo o código aki no fórum se quiser posso enviar p/ vc dar uma olhada.
claro que quero lindomar... manda pro meu email: jpxst@hotmail.com
Abração!!
GOSTEI 0
Alcantarus
20/01/2006
Caros colegas. estou precisando fazer uma rotina para realizar backup em cd.
dei uma procurada no forum e vi um post bem legal:
http://forum.clubedelphi.net/viewtopic.php?t=50462&highlight=backup
- ai fala algo sobre usar o InCD. Entao o que fiz foi o seguinte:
1. instalei o InCd 4
2. criei um código para compactar meu banco e em seguida copia-lo para o Cd.
- O problema é que o sistema nao copia para o CD. vou colar o código aqui e quem puder me auxiliar na questão agradeço
uses
ShellApi
procedure TBackup.IniciarBackupClick(Sender: TObject); var sl: TStringList; //compactação do arquivo NewFileName: string; //compactação do arquivo Dados: TSHFileOpStruct; // copia do arquivo para cd begin Memo1.Lines.Add(´Compactando o arquivo...´); if not assigned(fzip) then begin sl := TStringList.Create; NewFileName := ExtractFilePath(Application.ExeName); try sl.Add(NewFileName+´\ADM.FDB´); fzip := TZipThread.Create(´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´,sl,Memo1,false); finally sl.Free; end; Memo1.Lines.Add(´Arquivo Compactado...´); end; Memo1.Lines.Add(´Copiando o arquivo para o Cd...´); FillChar(Dados,SizeOf(Dados), 0); with Dados do begin NewFileName := ExtractFilePath(Application.ExeName); wFunc := FO_COPY; pFrom := PChar(NewFileName+´\´+´Backup - ´+FormatDateTime(´dd"_"mm"_"yyy´,Date)+´.zip´); pTo := PChar(DRIVE_CDROM); fFlags:= FOF_ALLOWUNDO; end; SHFileOperation(Dados); Memo1.Lines.Add(´Backup realizado com sucesso...´); end;
Caro Amigo,
Tenho uma rotina qual utilizo um batch (.BAT) e depois chamo esse (.EXE), para meu uso, esta funcionando perfeitamente, pois utilizo tb o inCD, formato um CD-RW e depois gravo utilizando essa rotina abaixo:
PS: Eu utilizo um (.INI) para pegar as configuracoes de qual pasta eu pego o backup e em qual gravadora eu devo gravar.
program Hashing;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, IniFiles;
var
sData : string[08];
sHora : string[04];
sOrigem, sDestino : string;
sDrive : string[03];
Inove : TIniFile;
begin
Inove := TIniFile.Create(ExtractFilePath(ParamStr(0)) + ´Inove.Ini´);
sDrive := Inove.ReadString(´CONFIG´, ´DRIVE´, ´´);
sOrigem := Inove.ReadString(´CONFIG´, ´PATH´, ´´);
ShortDateFormat := ´DD/MM/YYYY´;
sData := Copy(DateToStr(Date),1,2) + Copy(DateToStr(Date),4,2) + Copy(DateToStr(Date),7,4);
sHora := Copy(TimeToStr(Time),1,2) + Copy(TimeToStr(Time),4,2);
sDestino := sDrive + sData + sHora;
WriteLn(Chr(218) + ´ ´ + Chr(254) + ´ Sobre o Hashing ----------------------------------------------------------´ + Chr(191));
WriteLn(Chr(179) + ´ Desenvolvido por Inove Tecnologia ´ + Chr(179));
WriteLn(Chr(192) + ´-----------------------------------------------------------------------------´ + Chr(217));
if (not DirectoryExists(sDestino)) then
begin
WriteLn(´Criando Pasta para Back-Up...´);
CreateDir(sDestino);
WriteLn(´Copiando Backup para Pasta ´ + sDestino + ´! Aguarde...´);
CopyFile(PChar(sOrigem + ´\TLCOPIA.ARJ´),PChar(sDestino + ´\TLCOPIA.ARJ´),FALSE);
WriteLn(´Processo de Back-Up concluido com sucesso!´);
end
else
begin
WriteLn(´Erro! Impossivel continuar com a acao.´);
WriteLn(´Possiveis causas:´);
WriteLn(´1. A Pasta e o Back-Up ja estao gravados no CD-RW;´);
WriteLn(´2. Ja atingiu a capacidade total de gravacao no CD-RW;´);
WriteLn(´3. O CD-RW nao esta formatado com o inCD para executar essa acao;´);
end;
Inove.Free;
end.
Abraços,
Alcantarus
GOSTEI 0