Backup em CD
20/01/2006
0
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
Posts
20/01/2006
Lindomar.des
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
20/01/2006
Mahdak
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?
20/01/2006
Lindomar.des
qual o tipo da variavel/constante de: DRIVE_CDROM
Lindomar.
20/01/2006
Christian_adriano
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.
20/01/2006
Edilcimar
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;
20/01/2006
Thiagopedro
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
20/01/2006
Mahdak
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??
20/01/2006
Mahdak
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...
20/01/2006
Edilcimar
20/01/2006
Mahdak
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;
20/01/2006
Edilcimar
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
21/01/2006
Lindomar.des
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.
22/01/2006
Mahdak
claro que quero lindomar... manda pro meu email: jpxst@hotmail.com
Abração!!
23/01/2006
Alcantarus
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
Clique aqui para fazer login e interagir na Comunidade :)