Pular para o conteúdo

Copiar Arquivos [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Copiar Arquivos [RESOLVIDO]

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 !!!

Responder tópico

2. Re: Copiar Arquivos [RESOLVIDO]

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]

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

Seria para copiar com os arquivos

4. Re: Copiar Arquivos [RESOLVIDO]

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]

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]

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]

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]

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]

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]

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]

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

Resolvi o problema usando "rsync -R origem destino"

Obrigado pela ajuda!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder