Array
(
)

Configurar pasta de Backup.

Alexssandrolima
   - 04 fev 2014

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,
#Código

     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 #Código
   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.

Joel Rodrigues
   - 05 fev 2014

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

Alexssandrolima
   - 05 fev 2014


Citação:
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
#Código

                    string diretoriobkp = sourcePath + bkpPatchpop + sourcePath; 

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

obrigado.

Joel Rodrigues
   - 05 fev 2014

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.

Alexssandrolima
   - 05 fev 2014


Citação:
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.

#Código

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 #Código
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 #Código
 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 #Código
 string sourcePath = Environment.CurrentDirectory + "\";
vou peder usar tanto o c:\ como z:\
se alguem poder mim ajudar.

Joel Rodrigues
   - 06 fev 2014

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.

Alexssandrolima
   - 06 fev 2014


Citação:
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 #Código

 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.

Joel Rodrigues
   - 06 fev 2014

Olhando aqui com mais calma, você não está usando a variável que criou para armazenar o diretório de backup.
#Código

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?

Alexssandrolima
   - 06 fev 2014


Citação:
Olhando aqui com mais calma, você não está usando a variável que criou para armazenar o diretório de backup.
#Código

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 #Código
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.

Joel Rodrigues
   - 06 fev 2014

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.

Alexssandrolima
   - 07 fev 2014


Citação:
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 #Código

string sourcePath = Environment.CurrentDirectory + "\";
,

obrigado pela antenção.

Alexssandrolima
   - 08 fev 2014

modifiquei aqui!
#Código

             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"
#Código
                    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.
#Código
                        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 ,
#Código
                                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.

arquivo achado e nao tem o nome de onde ele vai. (Clique na imagem para abrir em uma nova janela)

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

obrigado esperando alguma resposta.

Joel Rodrigues
   - 08 fev 2014

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:
#Código

FileInfo finfo = new FileInfo(dir);
string arquivonovo = sourcePath + bkpPatchpop + finfo.Name;

Alexssandrolima
   - 14 fev 2014


Citação:
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:
#Código

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

..

Joel Rodrigues
   - 17 fev 2014

Opa, que bom que deu certo.
Quando for fazer a parte de compactação, dê uma olhada nesse post antes de usar o WinRar: Compactando e extraindo diretórios em C#.

Abraço.