Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Backup online!


Douglas Soares

Pergunta

Ae galera por favor eu te ficando doidao aqui na empresa da pra me ajudar? o sistema do backup online que eu fiz ta dando mts erros, queria me ajudassem a reformula-lo! olhem o que eu preciso, se puderem me auxilar agradeço mt, pois estou sendo mt cobrado aqui :angry:

Preciso conectar no ftp usando o componente tidftp, depois checar se a pasta com o numero do cliente já existe!, o numero do cliente eu pego com isso:

var
numerodocliente : integer;
begin
frmBackupFb.cdsParam.open;
numerodocliente := frmBackupFb.cdsParamCODIGO_I.AsString;
end;
se exister, entrar na pasta, se não existir, criar a pasta e entrar nela! depois disso eu envio o arquivo para a pasta!, depois eu preciso trazer para um stringlist todos os arquivos do tipo zip que estão no servidor! Após isso tenho que checar quantos arquivos estão no stringlist, e se for mais de 3 deletar o que tem a menor data! exemplo:
if stringlist.Count > 2 then
begin
frmBackupFB.idftp1.Delete('Arquivo com a menor data no nome!');
end;

porque o nome dos arquivos de backups são sempre assim: backup13072009.zip e eu precisava organizar pelo data que contem no nome, e não pela data do arquivo! rs

tipo, eu poderia mudar o nome do backup para backup20090713.zip ou 20090713backup.zip porem na hora que eu exibir o nome desses arquivos na telinha de restore, eu teria que exibir o nome padrão que é backup13072009.zip

huhuhuhuu Vlw pela atenção!

Abraços!

Editado por Douglas_Soares
Adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
porque o nome dos arquivos de backups são sempre assim: backup13072009.zip e eu precisava organizar pelo data que contem no nome, e não pela data do arquivo! rs

tipo, eu poderia mudar o nome do backup para backup20090713.zip ou 20090713backup.zip porem na hora que eu exibir o nome desses arquivos na telinha de restore, eu teria que exibir o nome padrão que é backup13072009.zip

Eu já te passei .. e pelo visto voce não testou

http://scriptbrasil.com.br/forum/index.php...st&p=557886

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

ae jhonas disculpa a demora pra responder.... eu fiz isso mas n deu certo, olha o código todo!

unit up_backup;

interface

uses
  Classes,SysUtils,IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,idftp,
Forms, Windows, Messages, Dialogs, Controls, StdCtrls;

type
  UploadBackup = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure Mensagem1;
    procedure Mensagem2;
    procedure _OnWork(ASender: TObject; AWorkMode: TWorkMode;
        const  AWorkCount: Integer);
    procedure _OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
       const AWorkCountMax: Integer);
    procedure MeuArray;
  end;

implementation
uses
BackupFb, Math;

var
datas: array of string;
slBackups: TStringList;

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure UploadBackup.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ UploadBackup }

procedure UploadBackup._OnWork(ASender: TObject; AWorkMode: TWorkMode;
  const  AWorkCount: Integer);
begin
  FrmBackupFb.Gauge1.Progress := AWorkCount;
  Application.ProcessMessages;
end;

procedure UploadBackup._OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
const  AWorkCountMax: Integer);
begin
  FrmBackupFb.Gauge1.Progress := 0;
  if AWorkCountMax > 0 then
  FrmBackupFb.Gauge1.MaxValue := AWorkCountMax
  else
  FrmBackupFb.Gauge1.MaxValue := bytesToTransfer;
end;

procedure UploadBackup.Mensagem1;
begin
MessageDlg('Backup realizado e enviado para sua Area Restrita com Sucesso!', mtInformation, [mbOk],0);
end;

procedure UploadBackup.Mensagem2;
begin
ShowMessage('Erro Desconhecido, tente novamente mais tarde!');
end;

procedure UploadBackup.MeuArray;
var
  i: Integer;
  valor, s: string;
  indice: Integer;
  ok: Boolean;
begin
  //aloca espaço para os itens no vetor
  SetLength(datas,slBackups.Count);

  // retira parte da string e converte para data
  for i := 0 to slBackups.Count do
    begin
       s := copy(slBackups.Strings[i],7,8);
       insert('/',s,3);
       insert('/',s,6);
       datas[i] := 'backup'+(formatdatetime('dd/mm/yyyy',strtodate(s)))+'.zip';
    end;

  // faz a ordenação
  repeat
    ok := False;
    indice := 0;
    repeat
      if CompareStr(datas[indice], datas[indice + 1]) = 2 then
      begin
        valor := datas[indice];
        datas[indice] := datas[indice + 1];
        datas[indice + 1] := valor;
        ok := True;
      end;
      Inc(indice);
    until(indice > High(datas));
  until(ok = False);
  // fim ordenação

  // exibe o array ordenado no proprio listbox
  slBackups.Clear;
  for i := Low(datas) to High(datas) do
     begin
        delete(datas[i],9,1);
        delete(datas[i],11,1);
        slBackups.Append(datas[i]);
     end;
end;

procedure UploadBackup.Execute;
var
idftp1:tidftp;
ftpconnect:integer;
local : string;
pastabackup : String;
s_arquivo : string;
begin
  slBackups := TStringList.Create; //***********

  s_arquivo := 'backup' + FormatDateTime('ddmmyyyy', Date) + '.zip';
  pastabackup := ExtractFilePath(Application.ExeName) + '\Area Restrita\' + s_arquivo;
  local := ExtractFilePath(Application.ExeName);
  frmBackupFB.idftp1:=tidftp.Create(nil);

  ftpconnect:=0;
  with frmBackupFB.idftp1 do
  begin
    Host := 'ftp.meusite.com.br'; // ftp
    Port := 21;
    ReadTimeout := 1000;
    Username := 'usuario';
    Password := 'senha';
    onWork := _OnWork;
    onWorkBegin := _OnWorkBegin;
  end;

  try
    frmBackupFB.idftp1.Connect;
    ftpconnect:=1;
  except
    Abort;
    ftpconnect := 0;
  end;

  if ftpconnect = 1 then
  begin
    try
      frmBackupFb.cdsParam.Open;
      try
        if (frmBackupFB.idftp1.Size(frmBackupFb.cdsParamCODIGO_I.AsString) >= 0) then
          frmBackupFB.idftp1.MakeDir(FrmBackupFb.cdsParamCODIGO_I.AsString);

        frmBackupFB.idftp1.ChangeDir(frmBackupFb.cdsParamCODIGO_I.AsString);
        frmBackupFB.idftp1.Put(pastabackup, s_arquivo);

      except
        if (frmBackupFB.idftp1.Size(frmBackupFb.cdsParamCODIGO_I.AsString) >= 0) then
        frmBackupFB.idftp1.MakeDir(FrmBackupFb.cdsParamCODIGO_I.AsString);
        
        frmBackupFB.idftp1.ChangeDir(frmBackupFb.cdsParamCODIGO_I.AsString);
        frmBackupFB.idftp1.Put(pastabackup, s_arquivo);
      end;

      try
      frmBackupFB.idftp1.List(slBackups, '*.zip', false);
      except
      end;

      Synchronize(MeuArray);
      if slBackups.Count > 2 then
      begin
      frmBackupFB.idftp1.Delete(slBackups.Strings[0]);
      end;

    Synchronize(Mensagem1);
    frmBackupFb.cdsParam.Close;

    FrmBackupFb.BitBtn2.Enabled := True;
    except
      Synchronize(Mensagem2);

      FrmBackupFb.BitBtn2.Enabled := True;
      frmBackupFB.idftp1.Abort;
    end;
  end;
  frmBackupFB.idftp1.Disconnect;
  frmBackupFB.idftp1.Free;
  FreeandNil(slBackups);
end;

end.

Me ajudem :unsure:

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
porem na hora que eu exibir o nome desses arquivos na telinha de restore, eu teria que exibir o nome padrão que é backup13072009.zip

Isso voce já esta tendo aqui

slBackups.Append(datas);

Veja, voce cria a sua lista aqui:

procedure UploadBackup.MeuArray;

slBackups.Append(datas[i]);
Depois voce recria a lista novamente aqui:
procedure UploadBackup.Execute;

slBackups := TStringList.Create

Reveja o seu código com calma que voce achará o erro

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

não é isso não, eu quis dizer, q eu poderia renomear os arquivos para começar com a data e em formato yyyymmdd, porem n vou fazer mais!, então eu já tenho o nome de antes que é backupddmmaaaa.zip, está dando erros, vou tentar fazer um debug, e em seguida posto.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...