Questão Como posso copiar o conteúdo de uma pasta para outra pasta em um diretório diferente usando o terminal?


Eu estou tentando copiar o conteúdo de uma pasta para outra pasta em um diretório diferente usando o terminal.

Alguém poderia me fornecer um exemplo da sintaxe da linha de comando necessária para conseguir isso?


529
2017-12-11 01:19


origem


cyberciti.biz/faq/copy-folder-linux-command-line tem informações mais claras. - Dilip Rajkumar


Respostas:


Você pode copiar o conteúdo de uma pasta /source para outra pasta existente /dest com o comando

cp -a /source/. /dest/

o -a opção é uma opção recursiva aprimorada, que preserva todos os atributos de arquivo e também preserva links simbólicos.

o . no final do caminho de origem é um específico cp sintaxe que permite copiar todos os arquivos e pastas, inclusive os ocultos.


802
2017-12-11 12:01



Ótima resposta. Vou escrever um exemplo real no caso de alguém estar tendo problemas com este comando: sudo cp -a / var / www / opencart /. / var / www / opencart_local / - pablofiumara
@enzotib Eu estou tentando usar este comando para copiar o conteúdo de "Downloads / textext" para "~ / .config / inkscape / extensions /." Usando seu comando eu digite "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/." mas isso não funciona - Funzies
@Funzies: provavelmente o seu comando deve ser: cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/ - enzotib
Adicionar -p sinalizar como para preservar as permissões de arquivo e registros de data e hora. cp -ap /var/www/original.com/images/. /var/www/new.com/images/ - Dylan Valade
@DylanValade: -a já implica --preserve=all, isso é mais largo que -p = --preserve=mode,ownership,timestamps. - enzotib


Uma alternativa é rsync

rsync -r source/ destination

As vantagens do rsync são:

  1. Após a sincronização inicial, copiará apenas os arquivos que foram alterados.

  2. Você pode usá-lo em uma rede, conveniente para arquivos em $ HOME, especialmente arquivos de configuração.


97
2017-12-11 03:59



Eu acho que você não precisa do asterisco. rsync -r source/ destination deve ser o suficiente, não? - Joschua
Este é mais apropriado: 'rsync -rtvp source / * destination' - shridutt kothari
-r não funciona para arquivos / pastas ocultos - Nam G VU
Isso não copiará arquivos ocultos, já que o bash expande * apenas para arquivos não ocultos. A solução da @Joschua é mais segura. - sauerburger
O rsync irá copiar o diretório inteiro, incluindo arquivos ocultos, se você usar o trailing / sem um * rync source/ dest Obviamente, as pessoas precisarão personalizar o comando rsync para funcionar como desejarem. - Panther


Vamos dizer que você tem uma pasta chamada folder1 na tua ~, dentro folder1 é um arquivo chamado arquivo1 e 2 pastas chamadas sub1 e sub2 cada um com outros arquivos e pastas dentro deles.

Para copiar todo o conteúdo de ~/folder1 para ~/new_folder1 você usaria

cp -r ~/folder1/. ~/new_folder1

new_folder1 conteria então todos os arquivos e pastas de folder1.

cp é o comando para copiar usando um terminal, -r faz recursivamente (assim, diretório atual + diretórios adicionais dentro da corrente) ~/folder1 é a pasta de origem, ~/new_folder1 é a pasta de destino dos arquivos / pastas dentro da origem.


56
2017-12-11 01:23



ele não captura arquivos ocultos - Portablejim
Obrigado bruno! Isso me ajudou a entender a sintaxe, embora eu tenha que mudar um pouco (removendo ~ sinal). Talvez porque a pasta de destino estava em / opt, que reside em outro sistema de arquivos. E obrigado Portablejim para lembrar a coisa de arquivo escondida! - pandisvezia
O período final é importante. Sem isso, às vezes pode criar um novo subdiretório ~/new_folder1/folder1 em vez de copiar o conteúdo. - wisbucky
Por que não cp -r ~/folder1/* ~/new_folder1 - Alex78191
@ Alex78191 [root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]# - Bruno Pereira


Verificar isso http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ para mais informações sobre a pasta de cópia. Espero que isto ajude.

cp Command

cp é um comando do Linux para copiar arquivos e diretórios. A sintaxe é a seguinte:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

Nesta cópia de exemplo /home/vivek/letters pasta e todos os seus arquivos para /usb/backup diretório:

cp -avr /home/vivek/letters /usb/backup

Onde,

-a : Preservar os atributos especificados, como diretório, modo de arquivo, propriedade, registros de data e hora, se possível, atributos adicionais: contexto, links, xattr, all.

-v Explique o que está sendo feito.

-r Copiar diretórios de forma recursiva. Exemplo

Copie uma pasta chamada / tmp / conf para / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup

13
2017-11-25 05:53



Isso não é o que a pergunta pede. - cybermonkey
(Usando -r com -a é redundante; em gnu cp -a é o mesmo que "-dr --preserve = all") - cristoper


Se houver duas pastas: (com permissão de gravação)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Se você estiver dentro da pasta chamada PORTAL, onde deseja copiar todo o conteúdo de outra pasta, diga DATA no mesmo nível então você fará

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

Você tem que notar 2 pontos. Último ponto diz cópia aqui na pasta atual

e

um seguimento / DATA /. diz que todo o conteúdo dentro da pasta DATA para ser copiado, e não a própria pasta DATA.

Se você remover este "." de / DATA /

então toda a pasta DATA será copiada dentro do PORTAL (de onde você está lidando).


2
2017-09-09 10:39