Copiar apenas pastas [RESOLVIDO]

1. Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 25/01/2014 - 23:32h

Pessoal, boa noite.

Estou precisando de um script que faça a cópia apenas das pastas de um diretório para outros.

Por exemplo.

Eu tenho:

Pasta1
Pasta2
Pasta3
Pasta4

Gostaria de copiar esta estrutura para outro lugar, mas com a mesma estrutura.

Tem como?

Deem uma ajuda ae porque to quebrando a cabeça e ainda não achei uma forma de fazer isso.

Valeu!!


  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 26/01/2014 - 12:50h

Usa o find. Com esse comando aqui voce vai apenas criar os diretorios, sem copiar os arquivos.
Execute dentro do diretório base que quer copiar:

find . -type d -print0 | xargs -0 -L1 -i mkdir -p "/home/destino/{}"

*/home/destino é onde voce vai criar a nova arvore de diretorios
**assim não terá problema com espaços no nome também

3. Re: Copiar apenas pastas [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 26/01/2014 - 11:25h

Entra no diretório que contém as pastas e execute:

for i in $(ls); do cp -R $i nova/; done


4. Re: Copiar apenas pastas [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 26/01/2014 - 11:37h

Ou para copiar somente os diretórios:

for i in $(ls -d */); do cp -R $i ~/nova/; done


5. Re: Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 26/01/2014 - 12:40h

O problema com este comando é que será copiando os arquivos de dentro das pastas também se tiverem.

Também tentei usar o mkdir, com o mkdir até funciona mas as pastas que tem espaços ele separa, cria duas. Por exemplo "Aula 1", ele cria "Aula" e "1".


rei_astro escreveu:

Ou para copiar somente os diretórios:

for i in $(ls -d */); do cp -R $i ~/nova/; done





6. Re: Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 26/01/2014 - 18:15h

Hum entendi.

Não vou consegui testar hoje porque não estou com linux na minha máquina de casa mas amanha no trabalho eu teste.

Só um detalhe, e se a pasta conter espaços? Não vai separar os nomes e criar uma pasta com cada nome?

Valeu pelas ajudas!!


phoemur escreveu:

Usa o find. Com esse comando aqui voce vai apenas criar os diretorios, sem copiar os arquivos.
Execute dentro do diretório base que quer copiar:

find . -type d -print0 | xargs -0 -L1 -i mkdir -p "/home/destino/{}"

*/home/destino é onde voce vai criar a nova arvore de diretorios
**assim não terá problema com espaços no nome também





7. Re: Copiar apenas pastas [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 26/01/2014 - 20:19h

phoemur escreveu:
**assim não terá problema com espaços no nome também


Se tiver espaço ele vai criar o diretorio com espaço, nao vai criar duas pastas...



8. Re: Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 26/01/2014 - 20:56h

Opa cara, desculpa,a foi falta de atenção minha. Não vi que tinha a observação em baixo.

Amanhã eu vou testar e posto aqui o resultado.

Valeu!!


phoemur escreveu:

phoemur escreveu:
**assim não terá problema com espaços no nome também


Se tiver espaço ele vai criar o diretorio com espaço, nao vai criar duas pastas...





9. Re: Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 27/01/2014 - 08:16h

Cara, funcionou! Muito bom este comando.

Ajudou muito mesmo!

Valeu pelo auxilio.




phoemur escreveu:

Usa o find. Com esse comando aqui voce vai apenas criar os diretorios, sem copiar os arquivos.
Execute dentro do diretório base que quer copiar:

find . -type d -print0 | xargs -0 -L1 -i mkdir -p "/home/destino/{}"

*/home/destino é onde voce vai criar a nova arvore de diretorios
**assim não terá problema com espaços no nome também





10. Re: Copiar apenas pastas [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 27/01/2014 - 09:19h

jvis escreveu:

Cara, funcionou! Muito bom este comando.

Ajudou muito mesmo!

Valeu pelo auxilio.




phoemur escreveu:

Usa o find. Com esse comando aqui voce vai apenas criar os diretorios, sem copiar os arquivos.
Execute dentro do diretório base que quer copiar:

find . -type d -print0 | xargs -0 -L1 -i mkdir -p "/home/destino/{}"

*/home/destino é onde voce vai criar a nova arvore de diretorios
**assim não terá problema com espaços no nome também




Se funcionou marque como resolvido e dê a melhor resposta para o Phoemur


11. Re: Copiar apenas pastas [RESOLVIDO]

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 27/01/2014 - 10:41h

Já marquei como resolvido e dei a melhor resposta para o phoemur.

Valeu pela ajuda!!!

No entanto, gosta de pedir mais uma ajuda.

Tenho pesquisado muito sobre métodos de backups e vi a necessidade de criar um backup que apenas copie os arquivos alterados no último dia.

Bom, esta parte eu resolvi com o comando find /home/compartilhamentos/ -type f -mtime -1 -exec cp -ap {} $/home/backups \

Só que este comando copia apenas os arquivos e larga solto dentro da pasta /home/backups. O problema é quando um departamento tem um arquivo com o mesmo nome de outro departamento, dai ele vai substituir um dos arquivos.

O que eu quero é criar um script que copie apenas os arquivos alterados para uma mesma estrutura de diretórios, porém em outro lugar.

Exemplo:

ORIGEM:
/home/compartilhamentos/TI/01 - Documentos/Arquivo.txt

BACKUP:
/home/backups/compartilhamentos/TI/01 - Documentos/Arquivo.txt

Isso é possível?


12. Re: Copiar apenas pastas [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 27/01/2014 - 11:03h

Uso apenas isso:

rsync --backup --backup-dir=`date +%d-%m-%Y-%R` -a /local_origina/ /local_da _copia/


Na Primeira ele cria um backup full e nas próximas se tiver algo alterado ele cria uma pasta com a data e joga o antigo para la e sobrescreve o mais recente no full.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts