Por que meu comando cp não copia diretórios inteiros? [duplicado]

1

Eu testei o comando cp e ele só copiará arquivos individuais. Por exemplo, digitei cp seguido do nome exato do arquivo, depois digitei o diretório e o arquivo foi copiado. No entanto, quando eu digitei o diretório e o diretório de destino, nada no computador mudou. Eu pensei que cp deveria copiar o conteúdo nos diretórios.

Eu tentei isso várias vezes.

    
por thinksinbinary 26.09.2015 / 04:13

3 respostas

6

Quando você usa cp sem argumentos, o padrão é copiar os arquivos conforme abaixo

 cp sourcefile destinationLocation
 #will copy sourcefile to the specified destinationLocation

Mas se você quiser copiar um diretório, você precisa especificar o argumento recursivo como este

cp -R dir1 dir2 #copies dir1 to dir2
cp -R dir dir2 dir3 #copies dir1 & dir2 to dir3

Idealmente, você pode especificar quantos arquivos desejar para um único destino, todos separados por espaços. Isso aqui, no entanto, copia um diretório junto com suas permissões

 sudo cp -rp /home/me /media/backup/me
 -p     same as --preserve=mode,ownership,timestamps

Como alternativa, você pode usar o rsync

 sudo rsync -a /home/me/ /media/backup/me/
 -a, --archive

          Note that -a does not preserve hardlinks, because finding  multiply-linked
          files is expensive.  You must separately specify -H.

E, por favor, não esqueça as barras ao copiar usando o rsync. Veja a man page de cada comando nas opções de usá-los disponíveis no seu terminal digitando man cp ou man rsync

    
por Olu 26.09.2015 / 07:11
1

Use

cp -R

Especifica a cópia recursiva, ou seja, todos os subdiretórios e arquivos serão copiados. Use man cp para encontrar mais opções para cp.

    
por H. Freeze 26.09.2015 / 04:17
0

cp não, por padrão, copia diretórios. De man 1posix cp :

2. If source_file is of type directory, the following steps  shall  be
   taken:

    a. If  neither the -R or -r options were specified, cp shall write
       a diagnostic message to standard error, do  nothing  more  with
       source_file, and go on to any remaining files.

Você deve ter uma mensagem assim:

cp: omitting directory '...'

Por exemplo:

$ cp Documents Pictures
cp: omitting directory ‘Documents’

Como pode ser visto na manpage, use -r ou -R com cp :

cp -R Documents Pictures
    
por muru 26.09.2015 / 04:18