Configurar pasta de Backup.

04/02/2014

0

Boa tarde.
Estou com um programa que faz o bkp de uns arquivos. exemplo. dbug*.txt e copia para uma pasta debug\bkp_pop\.
ate ai tudo bem, consegui fazer. so que mim deparei com um problema. o meu programa tem que funcionar em rede. tambem.
Exemplo.
o executavel que gerar o debub. e de outro programador. e ele pode ser instalado no servidor/ecf, ou servidor mapeado para a ecf, entao vou mostra o codigo que eu consegui fazer executar. no servidor/ecf,
     namespace Limppop
{
    public partial class Limpando : Form
    {
  
       private void Limpando_Load(object sender, EventArgs e)
        {
            #region   "Aqui Limpando o pop debugs"
            string arquivoTexto = "debug*.txt";
            //string sourcePath = Environment.CurrentDirectory + "\\";
            string sourcePath = "\\syspaf\\pop\\";
            string bkpPatchpop = "bkp_pop";

            /// ***   arquivo que vai ser procurado ***  ///
            // aqui vou colocar a chamado de todos os arquivos....
            try
            {
                // Only get files that begin with the letter "c."
                //string[] dirs = sourcePath.GetTypeS(@"c*");
                //sstring[] dirarquivos = sourcePath.GetType(arquivoTexto);
                //  ARQUIVO DE BKP

                string arquivos = sourcePath + arquivoTexto;

                string[] dirs = Directory.GetFiles(sourcePath, arquivoTexto);

                foreach (string dir in dirs)
                {
                    //** começa aqui
                    string diretoriobkp = sourcePath + bkpPatchpop + sourcePath;
                    bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp);
                    if (!sVerificacaobkpPatchpop)
                    {
                        Directory.CreateDirectory(diretoriobkp);
                    }
                    bool sVerificacao = File.Exists(dir);
                    if (sVerificacao)
                    {
                        string arquivonovo = sourcePath + bkpPatchpop + dir;
                        #region "removendo o debug se estiver repetido"
                        try
                        {
                            if (File.Exists(arquivonovo) == false)
                            {
                                File.Move(dir, arquivonovo);
                            }
                            else
                            {
                                File.Delete(arquivonovo);
                                File.Move(dir, arquivonovo);
                            }   
                        }
                        catch (IOException errorarquivo)
                        {
                            listBoxLimpando.Items.Add(errorarquivo.Message + " erro ao copiar arquivo " + dir + " para " + arquivonovo);
                        }
                        #endregion
                    }
                    else
                    {
                        listBoxLimpando.Items.Add("Alerta erro: Este arquivo não existe (" + dir + ") \n Saindo do sistema.... Processando os Debugs");
                    }
                }

            }
            catch (Exception errorn)
            {
                MessageBox.Show(errorn.Message + " \n Problema ao executar a limpesa dos Debugs ","Processando os Debugs");
                MessageBox.Show("Saindo da Aplicação porque " +errorn.Message,"Terminando o Processo!",MessageBoxButtons.OK,MessageBoxIcon.Error);
                this.Close();
            }
            #endregion



Entao com este codigo acimo funciona que é uma beleza, só que troco a variavel
   string sourcePath = "\\syspaf\\pop\\";     por    string sourcePath = Environment.CurrentDirectory + "\\";    


aparece o seguinte erro na hora de gravar o bkp. c:syspaf\pop\bkp_pop\c:\syspaf\debug*.txt
ele repet o "c:" duas vezes e nâo sei como resolver.

alguem poderia mim dar alguma ajuda. obrigado.

Alexssandro Lima

Alexssandro Lima

Responder

Posts

05/02/2014

Joel Rodrigues

Na linha 30 do código acima, tem que ter esse sourcePath no final mesmo?
Responder

05/02/2014

Alexssandro Lima

Na linha 30 do código acima, tem que ter esse sourcePath no final mesmo?


Este codigo e porque eu nao consegui eviar para a pasta bkp_pop entao criei esta chamada
                    string diretoriobkp = sourcePath + bkpPatchpop + sourcePath; 

para que ele enviar para um diretorio de bkp. vc tem alguma ideia melhor para que eu use.

obrigado.
Responder

05/02/2014

Joel Rodrigues

Você quer enviar os arquivos contidos na pasta que está definida no sourcePath para a pasta bkp_pop?
Se for, experimente verificar se o diretório bkp_pop existe. Se não existir, crie ele e então copie os arquivos.
Responder

05/02/2014

Alexssandro Lima

Você quer enviar os arquivos contidos na pasta que está definida no sourcePath para a pasta bkp_pop?
Se for, experimente verificar se o diretório bkp_pop existe. Se não existir, crie ele e então copie os arquivos.




como tem no codigo acima. caso nao existir a pasta ele cria,
tubo normal e funcionando. mais quando eu troco o codigo como abaixo.

string sourcePath = "\syspaf\pop\";     por    string sourcePath = Environment.CurrentDirectory + "\";


ele repeto o local que esta sendo executado tudas vezes. e eu nao sei como tirar.

exemplo
string sourcePath = "\syspaf\pop\";     


com este codigo ele pega a pasta \syspaf\pop\debug*.txt para \syspaf\pop\bkp_pop\syspaf\pop\debug*.txt
ate ai ele funcionar lega. e salva, cria se nao existir,

quando eu uso
 string sourcePath = Environment.CurrentDirectory + "\";


ele cria c:\syspaf\pop\debug*.txt para c:\syspaf\pop\bkp_pop\C:\syspaf\pop\debug*.txt.
e dar o erro IOException que repete o c:\ duas vezes. e eu nao consegui ageitar.

por que isso.
proque uso tanto no c:\syspaf\pop. como no z:\pop\ e eu so consegui funcionar no \syspaf\pop\
e colocano
 string sourcePath = Environment.CurrentDirectory + "\";
vou peder usar tanto o c:\ como z:\
se alguem poder mim ajudar.

Responder

06/02/2014

Joel Rodrigues

O problema está na forma como você monta o diretoriobkp. Se você concatentar o sourcePath no final, vai dar esse erro. Você precisa montar esse diretório de outra forma, por exemplo, usando um nome fixo para a pasta de backup.
Responder

06/02/2014

Alexssandro Lima

O problema está na forma como você monta o diretoriobkp. Se você concatentar o sourcePath no final, vai dar esse erro. Você precisa montar esse diretório de outra forma, por exemplo, usando um nome fixo para a pasta de backup.


ola. bom dia!
um nome fixo eu nao consegui fazer.
porque, o sistema pega varias debug*.txt, exemplo. dbug010214,debug020214,debug030214, entao ele cria um list
 string[] dirs = Directory.GetFiles(sourcePath, arquivoTexto);
dentro do "dir" com cada nome dos arquivos que vai deletar da raiz \syspaf\pop e jogar na pasta de bckup.
Responder

06/02/2014

Joel Rodrigues

Olhando aqui com mais calma, você não está usando a variável que criou para armazenar o diretório de backup.
string diretoriobkp = sourcePath + bkpPatchpop + sourcePath;
bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp);
if (!sVerificacaobkpPatchpop)
{
            Directory.CreateDirectory(diretoriobkp);
}


Você cria o diretório, mas não usa depois, pois você move os arquivos para uma pasta composta de sourcePath+ bkpPatchpop + dir. Poderia conferir isso, por favor?
Responder

06/02/2014

Alexssandro Lima

Olhando aqui com mais calma, você não está usando a variável que criou para armazenar o diretório de backup.
string diretoriobkp = sourcePath + bkpPatchpop + sourcePath;
bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp);
if (!sVerificacaobkpPatchpop)
{
            Directory.CreateDirectory(diretoriobkp);
}


Você cria o diretório, mas não usa depois, pois você move os arquivos para uma pasta composta de sourcePath+ bkpPatchpop + dir. Poderia conferir isso, por favor?




lembrei, o +dir, e o nome dos arquivos que ele vai nomear quando mover. exemplo.

\syspaf\pop\debug123.txt para \syspaf\pop\bkp_pop\syspaf\pop\debug123.txt
\syspaf\pop\debug124.txt para \syspaf\pop\bkp_pop\syspaf\\popdebug124.txt
entao o dir e o comjunto de diretoriobko= \syspaf\bkp_pop\ + dir = \syspaf\pop\debug*.txt

entao e nesta hora que eu uso o "dir." nao sei se vc entendeu.

obrigado por mim ajudar. porque neste codigo eu queria usar o
string sourcePath = Environment.CurrentDirectory + "\"
e nao conseguir.

mais do geito que esta o codigo esta funcionando. em varios clientes. so nao consegui modificar para os clientes que usam em redes.
eu tinha um batch, e resolvi crialo em c# para mim ajudar na univercidade que estou fazendo.

aguardo alguma resposta do amigo.
Responder

06/02/2014

Joel Rodrigues

Se você colocar esse Enviroment.CurrentDirectory como quer e remover aquela concatenação do sourcePath no final, o que acontece?
Eu ainda insisto que não precisa desse sourcePath no final, dá pra fazer sem isso.
Responder

07/02/2014

Alexssandro Lima

Se você colocar esse Enviroment.CurrentDirectory como quer e remover aquela concatenação do sourcePath no final, o que acontece?
Eu ainda insisto que não precisa desse sourcePath no final, dá pra fazer sem isso.



Estou fazendo novos teste, quando eu termnar vou posta aqui para vc ver. como esta ficando. acho que hoje a noite eu vou terminar. entao volto a posta-lo para vc verifica junto comigo.
porque o que o codigo que eu coloquei esta funcionando. entao estou colocando o que tem este
string sourcePath = Environment.CurrentDirectory + "\";
,

obrigado pela antenção.
Responder

08/02/2014

Alexssandro Lima

modifiquei aqui!
             string arquivoTexto = "debug*.txt";
            string sourcePath = Environment.CurrentDirectory + "\\";     //troquei pelo o outro
            //string sourcePath = "\\syspaf\\pop\\";
            string bkpPatchpop = "bkp_pop" + "\\";         //coloquei para colocar as "\\"

modifiquei aqui"
                    string diretoriobkp = sourcePath + bkpPatchpop;   // retirei o ultimo daqui para tirar " sourcePath "
                    MessageBox.Show("Diretorio sourcePath " + sourcePath + "\r \n bkpPatchpop " + bkpPatchpop + "\r \n  bkp " + diretoriobkp);

modifiquei aqui tambem.
                        string arquivonovo = sourcePath + bkpPatchpop;  // modifiquei aqui retirando o "dir"
                        MessageBox.Show("sourcePath ( " + sourcePath + " ) \r \n bkpPatchpop ( " + bkpPatchpop + " ) \r \n Arquivo que vai ser modificado ( " + arquivonovo + " ) na Execusão ");

na hora de mover o arquivo para a pasta de backup , te que ter o nome do arquivo para qual ele vai mover. entao eu nao consegui colocar ,
                                File.Move(dir, arquivonovo);


dir = local + nome arquivo
arquivonovo = local + nome do arquivo

se olha no foto abaixo nao vai aparecer o nome do arquivo que ele vai mover.

[img:descricao=arquivo achado e nao tem o nome de onde ele vai.]http://arquivo.devmedia.com.br/forum/imagem/320947-20140208-013052.png[/img]

pode se que agora fica mais facil de entender o que estou querendo.

obrigado esperando alguma resposta.
Responder

08/02/2014

Joel Rodrigues

Pelo jeito faltou só o nome do arquivo no caminho de destino, né?
Para isso, você pode usar a classe FileInfo para pegar só o nome do arquivo e concatenar na variável arquivonovo. Exemplo:
FileInfo finfo = new FileInfo(dir);
string arquivonovo = sourcePath + bkpPatchpop + finfo.Name;
Responder

14/02/2014

Alexssandro Lima

Pelo jeito faltou só o nome do arquivo no caminho de destino, né?
Para isso, você pode usar a classe FileInfo para pegar só o nome do arquivo e concatenar na variável arquivonovo. Exemplo:
FileInfo finfo = new FileInfo(dir);
string arquivonovo = sourcePath + bkpPatchpop + finfo.Name;


boa noite. amigo, você foi de muita ajuda. uma seguencia de comando simples. resolveu quase um mes de sofrimento.

obrigado, esta concluido com sucesso funcionando 100%

ja estou fazendo outro projeto para fazer bkp usando u winrar.exe. nesta mesma linha de comandos.
e salvar em um servidor linux com o pscp.exe

..
Responder

17/02/2014

Joel Rodrigues

Opa, que bom que deu certo.
Quando for fazer a parte de compactação, dê uma olhada nesse post antes de usar o WinRar: [url:descricao=Compactando e extraindo diretórios em C#]https://www.devmedia.com.br/compactando-e-extraindo-diretorios-em-c-dica/28528[/url].

Abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar