Copiar Arquivos [RESOLVIDO]

1. Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 26/02/2013 - 10:26h

Caros amigos,

Estou com um problema simples e dê solução obscura para mim.

Tenho um diretório com múltiplos diretórios com múltiplos diretórios e arquivos dentro.
Quero copiar alguns desses arquivos para outro local e quero que vá junto esses diretórios que não existem no local destino.
Sei que posso fazer um script usando while, dirname e mkdir, mas gostaria de saber se tem algum comando com parâmetro que faça isso.

obrigado e Viva o Linux !!!


  


2. Re: Copiar Arquivos [RESOLVIDO]

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 26/02/2013 - 10:36h

@dolivervl , me perdi um pouco na sua dúvida...


Tenho um diretório com múltiplos diretórios com múltiplos diretórios e arquivos dentro.


Bacana, entendi.

Quero copiar alguns desses arquivos para outro local e quero que vá junto esses diretórios que não existem no local destino.


Esses "alguns arquivos" são muitos, são poucos, estão no mesmo diretório... Explique melhor...

A parte que tenho certeza, é que você quer copiar a estrutura de diretórios. Se quiser copiar a estrutura de diretórios sem os arquivos, essa dica pode te ajudar:

http://www.dicas-l.com.br/arquivo/copiando_uma_estrutura_de_pastas_sem_copiar_os_arquivos.php#.USy4_...

Dê mais detalhes quando aos arquivos...


3. Re: Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 26/02/2013 - 10:45h

Seria para copiar com os arquivos


4. Re: Copiar Arquivos [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 26/02/2013 - 11:13h

dolivervl escreveu:

Seria para copiar com os arquivos


Se você quer copiar diretórios que contém diretórios e arquivos preservando a árvore de diretórios, o mv faz isso. Vamos supor:

teste1/
-arquivo1
-arquivo2
-diretorio1
--arquivo3
--arquivo4
-arquivo5

(deu pra entender como está a árvore de diretórios?)

Se você der um mv teste1 /home/usuario/caixapregos, supondo que o diretório destino exista, o mv vai criar dentro de caixapregos o diretório teste1 com o mesmo conteúdo (inclusive subdiretórios) que ele tinha antes.

Pra não copiar alguns arquivos... qual seria o critério?


5. Re: Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 26/02/2013 - 11:28h

Talvez eu não tenha sido muito claro, vou tentar explicar. As vezes sou meio enrolado mesmo, foi mal:

arvore de diretórios
/
/1
/1/11
/1/11/111.arquivo
/2
/2/22
/2/22/222
/2/22/222/2222.arquivo
/3
/3/33
/3/33/333
/3/33/3333
/3/33/3333/3333
/3/33/3333/33333.arquivo
/4/44/4444/44444/44444
/4/44/4444/44444/44444.arquivo

Quero copiar todos os *.arquivo para um destino que seja "/5" e leve os diretórios que não existem, antes da copia o destino está assim:
/5
Depois da copia o destino estará assim:
/5/1/11/111.arquivo
/5/2/22/222/2222.arquivo
/5/3/33/3333/33333.arquivo
/5/4/44/4444/44444/44444.arquivo




6. Re: Copiar Arquivos [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 26/02/2013 - 11:32h

dolivervl escreveu:

Talvez eu não tenha sido muito claro, vou tentar explicar. As vezes sou meio enrolado mesmo, foi mal:

arvore de diretórios
/
/1
/1/11
/1/11/111.arquivo
/2
/2/22
/2/22/222
/2/22/222/2222.arquivo
/3
/3/33
/3/33/333
/3/33/3333
/3/33/3333/3333
/3/33/3333/33333.arquivo
/4/44/4444/44444/44444
/4/44/4444/44444/44444.arquivo

Quero copiar todos os *.arquivo para um destino que seja "/5" e leve os diretórios que não existem, antes da copia o destino está assim:
/5
Depois da copia o destino estará assim:
/5/1/11/111.arquivo
/5/2/22/222/2222.arquivo
/5/3/33/3333/33333.arquivo
/5/4/44/4444/44444/44444.arquivo




Vamos supor que essa farinha toda esteja dentro de um diretório chamado coisalouca

 $ mv coisalouca/*arquivo diretoriodestino 



7. Re: Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 26/02/2013 - 11:39h

lcavalheiro escreveu:

dolivervl escreveu:

Talvez eu não tenha sido muito claro, vou tentar explicar. As vezes sou meio enrolado mesmo, foi mal:

arvore de diretórios
/
/1
/1/11
/1/11/111.arquivo
/2
/2/22
/2/22/222
/2/22/222/2222.arquivo
/3
/3/33
/3/33/333
/3/33/3333
/3/33/3333/3333
/3/33/3333/33333.arquivo
/4/44/4444/44444/44444
/4/44/4444/44444/44444.arquivo

Quero copiar todos os *.arquivo para um destino que seja "/5" e leve os diretórios que não existem, antes da copia o destino está assim:
/5
Depois da copia o destino estará assim:
/5/1/11/111.arquivo
/5/2/22/222/2222.arquivo
/5/3/33/3333/33333.arquivo
/5/4/44/4444/44444/44444.arquivo




Vamos supor que essa farinha toda esteja dentro de um diretório chamado coisalouca

 $ mv coisalouca/*arquivo diretoriodestino 


Dessa forma ele só move os arquivos e não cria a árvore de diretório, que não sei qual é.

Acho que vou ter que criar um script mesmo.



8. Re: Copiar Arquivos [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 26/02/2013 - 11:47h

Já testou? Bem, se assim não funcionar, tenta:
 $ for i in */*arquivo */*/*arquivo */*/*/*arquivo */*/*/*/*arquivo */*/*/*/*/*arquivo; do criardiretorio=$(echo $(dirname "$i")); mkdir -p diretoriodestino/"$criardiretorio"; mv "$i" diretoriodestino/"$criardiretorio"; done  



9. Re: Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 26/02/2013 - 12:00h

lcavalheiro escreveu:

Já testou? Bem, se assim não funcionar, tenta:
 $ for i in */*arquivo */*/*arquivo */*/*/*arquivo */*/*/*/*arquivo */*/*/*/*/*arquivo; do criardiretorio=$(echo $(dirname "$i")); mkdir -p diretoriodestino/"$criardiretorio"; mv "$i" diretoriodestino/"$criardiretorio"; done  


Como não sei o tamanho da árvore de diretório não tenho como saber dessa forma.

Mesmo assim obrigado a todos pela ajuda.



10. Re: Copiar Arquivos [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 26/02/2013 - 12:05h

dolivervl escreveu:

lcavalheiro escreveu:

Já testou? Bem, se assim não funcionar, tenta:
 $ for i in */*arquivo */*/*arquivo */*/*/*arquivo */*/*/*/*arquivo */*/*/*/*/*arquivo; do criardiretorio=$(echo $(dirname "$i")); mkdir -p diretoriodestino/"$criardiretorio"; mv "$i" diretoriodestino/"$criardiretorio"; done  


Como não sei o tamanho da árvore de diretório não tenho como saber dessa forma.

Mesmo assim obrigado a todos pela ajuda.


Você pode aumentar mais ainda a quantidade de parâmetros pro for. O que sobrar não faz mal, saca?


11. Re: Copiar Arquivos [RESOLVIDO]

Diego Oliveira da Silva
dolivervl

(usa Slackware)

Enviado em 27/02/2013 - 11:10h

Resolvi o problema usando "rsync -R origem destino"

Obrigado pela ajuda!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts