web-dev-qa-db-fra.com

Pourquoi ma commande cp ne copie-t-elle pas des répertoires entiers?

J'ai testé la commande cp, qui ne copie que des fichiers individuels. Par exemple, j'ai saisi cp suivi du nom de fichier exact, puis le répertoire et le fichier ont été copiés. Cependant, lorsque j'ai tapé le répertoire et le répertoire de destination, rien n'a changé sur l'ordinateur. Je pensais que cp était supposé copier le contenu des répertoires.

J'ai essayé cela plusieurs fois.

3
thinksinbinary

Lorsque vous utilisez cp sans aucun argument, il copie par défaut les fichiers comme ci-dessous

 cp sourcefile destinationLocation
 #will copy sourcefile to the specified destinationLocation

Mais si vous voulez copier un répertoire, vous devez spécifier l'argument récursif comme ceci

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

Idéalement, vous pouvez spécifier autant de fichiers que vous le souhaitez pour une destination unique, tous séparés par des espaces. Ceci ci-dessous cependant copie un répertoire avec ses permissions

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

Vous pouvez également utiliser 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.

Et s'il vous plaît n'oubliez pas les barres obliques de fin lors de la copie à l'aide de rsync. Voir la page de manuel pour chaque commande sur les options d'utilisation disponibles sur votre terminal en tapant man cp ou man rsync

8
Olu Smith

Utilisation

cp -R

Il spécifie la copie récursive, c’est-à-dire que tous les sous-répertoires et fichiers seront copiés. Utilisez man cp pour trouver plus de commutateurs pour cp.

2
H. Freeze

cp ne copie pas, par défaut, les répertoires. 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.
_

Vous devriez avoir un message comme celui-ci:

_cp: omitting directory '...'
_

Par exemple:

_$ cp Documents Pictures
cp: omitting directory ‘Documents’
_

Comme le montre la page de manuel, utilisez _-r_ ou _-R_ avec cp:

_cp -R Documents Pictures
_
0
muru