it-swarm-eu.dev

Co znamená „cp: vynechání adresáře“?

Vydal jsem následující příkaz:

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

Když to udělám, začnu dostávat následující zprávy:

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' 

a tak dále...

Proč dostávám tyto zprávy?

423
MEM

Ve výchozím nastavení cp zkopíruje pouze přímé soubory v adresáři a nikoli podadresáře. Zpráva cp: omitting directory 'directory' vás upozorní, že uvedený adresář není zkopírován.

Chcete-li to provést, zadejte -r (nebo --recursive) možnost:

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

manuální stránka (příkaz: man cp) obsahuje přehled dostupných možností.

559
Lekensteyn

Zpráva znamená, že cp nezkopíruje uvedené adresáře. Toto je výchozí chování pro cp - pouze soubory jsou kopírovány normálně, bez ohledu na to, zda je specifikujete explicitně nebo pomocí *. Pokud chcete kopírovat adresáře, použijte -r přepínač, který znamená „rekurzivní“.

39
Roger Light

Zde je několik věcí, které je třeba zkontrolovat:

  1. Nepoužívejte Sudo. Nepotřebujete to, již máte oprávnění psát věci do svého vlastního domovského adresáře.

  2. Skryté soubory a adresáře můžete snadno zobrazit ve správci grafických souborů výběrem možnosti Zobrazit/zobrazit skryté soubory z nabídky. Nebo stisknutím Ctrl - H.

  3. K kopírování adresáře a jeho obsahu musíte použít volbu -R V příkazu cp.

  4. / home není váš domovský adresář./home/uživatelské jméno je. Takže se pravděpodobně pokoušíte kopírovat z nesprávného místa.

  5. Shell rozlišuje velká a malá písmena, takže ~/Downloads a ~/Downloads jsou dvě různé věci.

16
Nikunj K.

Když kopírujete adresář jako:

cp dir1 copy_of_dir1

Pouze kopírujete dir1 samotný a ne soubory v něm, takže nakonec skončí s novou adresářovou strukturou, zatímco struktura neexistuje.

Jinými slovy po zkopírování bude uvedeno, že můj obsah je file1, file2, atd; Tyto soubory však nebyly zkopírovány, a proto v nich neexistuje.

Chcete-li tento problém vyřešit, který se může objevit, cp ve výchozím nastavení nekopíruje adresáře a přeskočí je, pokud nezadáte -r možnost, která zkopíruje všechny soubory také rekurzivně.

2
Ravexina

Důvod, proč se říká omitting directory je proto, že cp a všechny obslužné programy pro kopírování, o kterých vím, vytvářejí seznam souborů a podadresářů, které mají být zkopírovány před zahájením kopírování souborů. Když --recursive možnosti chybí, podadresáře se dostanou do tohoto seznamu. Proto vynechání znamená odstranění ze seznamu kopií, nikoli ze zdrojového média. Věřím, že se to týká významu zprávy.

1
endrias

Příkaz cp se používá ke kopírování souborů a adresářů, nikoli vnořených adresářů, pokud chcete kopírovat vnořené adresáře, pak můžete přidat - r, kde -r znamená rekurzivní.

Syntaxe, kterou můžete sledovat (běží jako root):

cp -r /source/dir/* /destination/ 

nebo

cp --recursive /source/dir/* /destination/
0
itsguri