Si vous débutez avec la ligne de commande Linux, vous avez probablement cette question en tête :comment copier un répertoire et les fichiers qu'il contient dans un autre répertoire en ligne de commande Linux ?
Voici comment copier un répertoire sous Linux :
cp -r source_directory destination_directory
Vous savez probablement déjà que vous pouvez utiliser la commande cp pour copier des fichiers sous Linux. Savez-vous que vous pouvez utiliser la même commande cp pour copier un dossier en ligne de commande Linux ?
Ha ! Vous avez déjà essayé cela et peut-être avez-vous cette erreur :
cp: -r not specified; omitting directory 'test_dir'
Laissez-moi vous montrer une chose ou deux sur la copie de répertoire sous Linux.
Copier le répertoire dans la ligne de commande Linux
Vous pouvez certainement utiliser la même commande cp mais avec l'option récursive -r pour copier un dossier avec son contenu dans un autre dossier. L'erreur mentionnée ci-dessus indique également que vous avez manqué l'option -r.
Tout ce que vous avez à faire est d'utiliser la commande de cette manière :
cp -r source_directory destination_directory
Et maintenant, si vous utilisez la commande ls sur le répertoire de destination, il devrait contenir tout le répertoire source.
L'option -r autorise l'option récursive. Cela signifie que tout le contenu du répertoire, y compris ses propres sous-répertoires, tout ce qui se trouve dans le répertoire sera copié vers la destination.
Quelques choses à noter sur la copie de répertoire sous Linux
Voici quelques points à noter et des conseils sur la copie de dossiers.
Le répertoire de destination n'existe pas ? Il sera créé
Si le répertoire de destination n'existe pas (mais le chemin existe), il sera créé jusqu'à un niveau (expliqué dans la section suivante). Cependant, il copiera désormais le contenu du répertoire source, et non le répertoire source lui-même.
Par exemple, si vous faites ceci :
cp -r source_directory non_existing_directory
Le non_existing_directory sera créé avec le contenu du source_directory mais il n'aura pas le source_directory à l'intérieur. Seuls les fichiers de source_directory seront copiés. Ce serait comme si non_existing_directory serait une réplique de source_directory.
[email protected]:~$ ls
test_dir
[email protected]:~$ cp -r test_dir new_dir
[email protected]:~$ tree
.
├── new_dir
│ ├── c.xyz
│ ├── myzip1.zip
│ └── myzip2.zip
└── test_dir
├── c.xyz
├── myzip1.zip
└── myzip2.zip
2 directories, 6 files
Impossible de créer un répertoire imbriqué lors de la copie
Vous ne pouvez pas utiliser la commande ci-dessus pour créer une structure de répertoire imbriquée.
Par exemple, si vous essayez d'utiliser cp -r source_dir dir1/dir2/dir3 mais que dir2 et dir3 n'existent pas, la structure de répertoires imbriquée ne sera pas créée et la commande échouera.
Conserver les attributs du fichier d'origine
Un dernier conseil pour faire court. Si vous utilisez l'option -a avec l'option -r, les informations sur le fichier d'origine telles que les autorisations de fichier, les horodatages de fichier, etc. seront conservées. Il archivera le répertoire dans le nouvel emplacement au lieu de le créer à nouveau.
C'est tout
Cette quantité d'informations devrait vous suffire pour savoir comment copier un répertoire sous Linux. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire.