1140 votes

Comment puis-je copier le contenu d'un dossier vers un autre dossier dans un répertoire différent en utilisant le terminal?

Je suis en train d'essayer de copier le contenu d'un dossier vers un autre dossier dans un répertoire différent en utilisant le terminal.

Est-ce que quelqu'un pourrait me fournir un exemple de la syntaxe de la ligne de commande nécessaire pour y parvenir ?

1712voto

enzotib Points 86709

Vous pouvez copier le contenu d'un dossier /source vers un autre dossier existant /dest avec la commande

cp -a /source/. /dest/

L'option -a est une option récursive améliorée, qui préserve tous les attributs des fichiers, et préserve également les liens symboliques.

Le . à la fin du chemin source est une syntaxe spécifique de cp qui permet de copier tous les fichiers et dossiers, y compris les fichiers cachés.

0 votes

@enzotib j'essaie d'utiliser cette commande pour copier le contenu de "Téléchargements/textext" dans "~/.config/inkscape/extensions/." En utilisant votre commande, j'entre "cp -a /Téléchargements/textext/. /~/.config/inkscape/extensions/." mais cela ne fonctionne pas.

0 votes

@Funzies: probablement votre commande devrait être: cp -a ~/Téléchargements/textext/. ~/.config/inkscape/extensions/

0 votes

Ajoutez le drapeau -p pour conserver les autorisations et les horodatages des fichiers. cp -ap /var/www/original.com/images/. /var/www/new.com/images/

181voto

Panther Points 96601

Une alternative est rsync:

rsync -a source/ destination

Les avantages de rsync sont :

  1. Après la synchronisation initiale, il ne copiera que les fichiers qui ont changé.
  2. Vous pouvez l'utiliser sur un réseau, pratique pour les fichiers dans $HOME, surtout les fichiers de configuration.

6 votes

Je pense que vous n'avez pas besoin de l'astérisque. rsync -r source/ destination devrait suffire, non?

1 votes

Celui-ci est plus approprié : 'rsync -rtvp source/* destination'

0 votes

-r ne fonctionne pas pour les fichiers/dossiers cachés.

107voto

Bruno Pereira Points 70510

Supposons que vous ayez un dossier appelé folder1 dans votre ~, à l'intérieur de folder1 se trouve un fichier appelé file1 et 2 dossiers appelés sub1 et sub2 chacun contenant d'autres fichiers et dossiers à l'intérieur.

Pour copier tous les contenus de ~/folder1 vers ~/new_folder1 vous utiliserez

cp -r ~/folder1/. ~/new_folder1

new_folder1 contiendra alors tous les fichiers et dossiers de folder1.

cp est la commande pour copier dans un terminal, -r la rend récursive (donc, le répertoire actuel + les répertoires supplémentaires à l'intérieur du répertoire actuel) ~/folder1 est le dossier d'origine, ~/new_folder1 est le dossier de destination pour les fichiers/dossiers à l'intérieur de l'origine.

7 votes

Il ne capture pas les fichiers cachés

1 votes

Merci Bruno! Cela m'a aidé à comprendre la syntaxe, même si j'ai dû la modifier un peu (en enlevant le signe ~). Peut-être parce que le dossier de destination était dans /opt, qui se trouve dans un autre système de fichiers. Et merci Portablejim de rappeler la chose des fichiers cachés!

6 votes

La période de clôture est importante. Sans cela, il peut parfois créer un nouveau sous-répertoire ~/new_folder1/folder1 au lieu de copier le contenu.

35voto

scape Points 365

Exemple simple.

Copiez le _répertoire dir_1 et son contenu (fichiers) dans le répertoire dir_2_ :

cp -r ./dir_1 ./dir_2
# ou
cp -r ./dir_1/ ./dir_2/
# Résultat : ./dir_2/dir_1/_fichiers_

Copiez _seulement le contenu (fichiers) de dir_1 dans le répertoire dir_2_ :

cp -r ./dir_1/. ./dir_2
# ou
cp -r ./dir_1/. ./dir_2/
# Résultat : ./dir_2/_fichiers_

_fichiers_ est un espace réservé pour les fichiers réellement situés dans le répertoire.

18voto

Dilip Rajkumar Points 307

Vérifiez ce http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ pour plus d'informations sur la copie de dossiers. Espérons que cela vous aide.

Commande cp

cp est une commande Linux pour copier des fichiers et des répertoires. La syntaxe est la suivante :

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

Dans cet exemple, copiez le dossier /home/vivek/letters et tous ses fichiers dans le répertoire /usb/backup :

cp -avr /home/vivek/letters /usb/backup

Où,

-a : Préserve les attributs spécifiés tels que le mode du répertoire et du fichier, la propriété, les horodatages, si possible les attributs supplémentaires : contexte, liens, xattr, all.

-v : Explique ce qui est fait.

-r : Copier les répertoires de manière récursive. Exemple

Copier un dossier appelé /tmp/conf vers /tmp/backup :

$ cp -avr /tmp/conf/ /tmp/backup

3 votes

Ce n'est pas ce que la question demande.

0 votes

Utiliser -r avec -a est redondant; sur gnu cp -a est la même que "-dr --preserve=all"

1 votes

cp : les options -R et -r ne peuvent pas être spécifiées ensemble.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X