Questão O que significa "cp: omitindo diretório"?


Eu emiti o seguinte comando:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Quando faço isso, começo a receber as seguintes mensagens:

cp: omitting directory `Tag' 
cp: omitting directory `Test' 
cp: omitting directory `Text' 
cp: omitting directory `TimeSync' 
cp: omitting directory `Tool' 
cp: omitting directory `Translate' 
cp: omitting directory `Uri' 
cp: omitting directory `Validate' 

e assim por diante...

Por que recebo essas mensagens?


365
2018-04-18 15:11


origem




Respostas:


Por padrão, cp copia apenas os arquivos diretos, e não subdiretórios no diretório. A mensagem cp: omitting directory 'directory' avisa que o diretório mencionado não foi copiado.

Para fazer isso, especifique o -r (ou --recursive) opção:

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

o página de manual (comando: man cp) contém uma visão geral das opções disponíveis.


477
2018-04-18 15:15



Muito obrigado. Eu pensei que * lidar com isso de forma recursiva de alguma forma. Mas não. : D Obrigado novamente. :) - MEM
@MEM: o * é expandido por Bash, não por cp. Teste você mesmo colocando echo  na frente do seu comando. Quando expandido, combina tudo com um precedente ...library/Zend/ (os arquivos e diretórios nele). - Lekensteyn
A boa notícia é que omitting directory 'directory' não significa que está excluindo esse diretório. - Bishwas Mishra
@Lekensteyn Eu estava tentando copiar o conteúdo de um usuário para outro. Assim eu ganhei permissão do usuário com chmod a+rx ~/ depois que eu tentei copiar com cp /home/2110/* /home/2111/ Produz erro cuja permissão de estados é negada. onde eu estava errado. desculpe comentar porque eu não posso fazer perguntas duplicadas. Espero por uma resposta rápida :) - jasinth premkumar
@jasinthpremkumar Arquivos em /home/2110 são de propriedade do usuário 2110, enquanto arquivos em /home/2111 devem ser propriedade de 2111. Para definir o proprietário, use algo como sudo chown -R 2111 /home/2111. - Lekensteyn


A mensagem significa que cp não copiou os diretórios listados. Este é o comportamento padrão para cp - somente os arquivos são copiados normalmente, independentemente de você estar especificando-os explicitamente ou usando *. Se você quiser que os diretórios copiem, use o -r interruptor que significa "recursivo".


34
2018-04-18 15:15





Algumas coisas aqui que precisam verificar:

  1. Não use sudo. Você não precisa, você já tem permissões para escrever coisas em seu próprio diretório.

  2. Você pode facilmente visualizar arquivos e diretórios ocultos no gerenciador de arquivos gráficos selecionando Visualizar / Mostrar Arquivos Ocultos no menu. Ou pressionando Ctrl - H.

  3. Você precisa usar o -R opção no cp comando para copiar um diretório e seu conteúdo.

  4. / home não é o seu diretório inicial. / home / nome de usuário é. Então você provavelmente está tentando copiar do lugar errado.

  5. O shell faz distinção entre maiúsculas e minúsculas, portanto, ~ / downloads e ~ / Downloads são duas coisas diferentes.


14
2017-10-04 07:02





Quando você está copiando um diretório como:

cp dir1 copy_of_dir1

Você está copiando apenas e exatamente dir1 em si e não os arquivos dentro dele, então no final você vai acabar com uma nova estrutura de diretórios enquanto a estrutura não existir.

Em outras palavras, depois de ter sido copiado, dirá que meu conteúdo é file1, file2etc; No entanto, esses arquivos não foram copiados e, portanto, não existem nele.

Então, para corrigir esse problema que pode surgir cp por padrão, não copia os diretórios e os ignora, a menos que você especifique -r opção que copia todos os arquivos recursivamente também.


2
2017-07-03 07:47





A razão pela qual diz omitting directory é porque cp e todos os utilitários de cópia, que eu conheço, criam uma lista de arquivos e subdiretórios para serem copiados antes de começar a copiar os arquivos. Quando o --recursive opções estão faltando, subdiretórios são removidos desta lista. Como tal, omitir refere-se à remoção da lista de cópias, não da sua mídia de origem. Eu acredito que isso aborda o significado da mensagem.


1
2017-07-24 08:32





Suponha que você tenha dois diretórios 'Tag' e 'Test'

Se você deseja copiar o diretório 'Tag' para o comando 'Test' directory use

$ : cp -r Tag Test (case sensitive)

Principalmente problema será resolvido com código acima se não e você recebe abaixo mensagem como

cp: omitting directory `Tag' 
cp: omitting directory `Test'

em seguida, adicione alguns arquivos no diretório 'Tag' e copie-os para 'Test'. Na verdade eu tenho o mesmo problema, mas resolvi como o que eu disse em segundo lugar.


-1
2017-07-03 07:14