Lorsque l’on se trouve dans un terminal sur Linux, on peut avoir besoin de copier des fichiers ou répertoires.
Cela peut être des copies d’un répertoire local.
Pour cela, il existe plusieurs commandes comme cp, rsync ou scp.
Cet article vous donne plusieurs solutions pour copier des fichiers ou dossier sur Linux depuis un terminal.

Table des matières
Copier des fichiers ou répertoire avec cp
La commande cp permet de copier des fichiers en local.
C’est donc la commande la plus utile dans ce cas de figure.
Plusieurs options sont disponibles, voici la liste :
Les options | Description |
-v | (verbose) : affiche la progression de plusieurs fichiers copiés |
–backup | Fais une sauvegarde de chaque fichier de destination existant |
–p | (préserve) : conserve les mêmes attributs, comme la date de création et les autorisations de fichier |
-f | (force) : force la copie en supprimant d’abord un fichier existant |
–i | (interactive) : demande de confirmation, vivement conseillé |
-R | (récursif) : copie tous les fichiers et sous-dossiers d’un répertoire |
-u | (update) : copie uniquement si la source est plus récente que la destination |
La syntaxe étant la suivante :
cp [Option] [Source] [Destination]
Copie de fichiers avec la commande cp
Voici comment un fichier fichier.txt vers fichier_destination.txt :
cp fichier.txt fichier_destination.txt
Bien entendu, on peut tout à faire indiquer le répertoire source ou de destination.
Dans ces deux exemples, on ne spécifie pas le fichier de destination, la commande cp garde alors le nom du fichier.
cp fichier.txt /home/malekalmorte/sousdossier/
cp /root/fichier.txt /home/malekalmorte/sousdossier/
Mais si on veut copier fichier.txt avec un nouveau nom fichier_destination.txt :
cp fichier.txt /home/malekalmorte/sousdossier/fichier_destination.txt
cp /root/fichier.txt /home/malekalmorte/sousdossier/fichier_destination.txt
Pour conserver les métadonnées comme la date du fichier, les attributs, autorisations et attributs, on utilise l’option -p :
cp -p fichier.txt fichier_destination.txt
Copie de répertoires avec la commande cp
Pour copier un fichier dans un répertoire, spécifiez le chemin absolu ou relatif du répertoire. Lorsque le répertoire de destination est omis, le fichier est copié dans le répertoire en cours.
cp fichier.txt /home/malekalmorte/
Si vous souhaitez copier le fichier sous un nom différent, vous devez spécifier le nom de fichier souhaité :
cp fichier.txt /home/malekalmorte/fichier_destination.txt
Copier un fichier dans un répertoire
Pour copier plusieurs fichiers et répertoires à la fois, spécifiez les noms des fichiers et répertoires source suivis du répertoire de destination comme dernier argument :
cp fichier.txt /home/malekalmorte/ fichier1.txt fichier.txt /home/kevin/
On peut aussi utiliser le caractère joker (wildcard) pour copier tous les fichiers avec une même extension.
Par exemple pour copier tous les fichiers PNG :
cp *.png /home/malekalmorte/
Mais cela fonctionne aussi pour les noms de fichiers, par exemple si vous avez des fichiers image1.png image2.png image3.png et ainsi de suite… pour toutes les copier :
cp image*.png /home/malekalmorte/
Notez que l’on aurait pu aussi utiliser cette syntaxe pour copier les fichiers de 1 à 9 :
cp image{1,9}.png /home/malekalmorte/
Copier plusieurs fichiers en récursif
Pour copier un répertoire, y compris tous ses fichiers et sous-répertoires, utilisez l’option -R ou -r.
C’est une copie alors récursive qui copie l’arborescence complète avec l’ensemble des sous-dossiers.
Elle créera le répertoire de destination et copiera récursivement tous les fichiers et sous-répertoires de la source vers le répertoire de destination.
Dans l’exemple suivant, nous copions le répertoire images vers images_backup :
cp -R images images_backup
Si le répertoire de destination existe déjà, le répertoire source lui-même et son contenu sont copiés dans le répertoire de destination.
Pour copier uniquement les fichiers et sous-répertoires mais pas le répertoire cible, utilisez l’option -T :
cp -RT images images_backup
Sauvegarder le fichier à copier avant écrasement
La commande cp vous permet de sauvegarder le fichier si le fichier se trouve dans le répertoire cible à l’aide de l’option –backup.
Dans cet exemple, nous copions le fichier /home/malekalmorte/fichier.txt vers /home/kevin/fichier.txt.
Comme ce dernier existe, un message de demande d’écrasement s’affiche :
cp --backup /home/malekalmorte/fichier.txt /home/kevin/
cp: overwrite ‘/home/kevin/fichier.txt’? y
si vous répondez oui, cela va remplacer le fichier fichier.txt par celui copier mais l’OS va aussi créer une sauvegarde du précédent sous le nom de fichier /home/kevin/fichier.txt~.
il ajoute un ~ à la fin du fichier.
Copier une arborscence en récursif et exclure un répertoire spécifique
On arrive ensuite à des situations spécifiques.
Par exemple une arborescence avec des sous-dossiers et vous souhaitez copier celle-ci en excluant un ou plusieurs sous-dossiers.
Plusieurs solutions sont possibles.
En illustration, on utilisera cette arborescence.
La première consiste à utiliser la commande cp en exécutant la commande ls puis en excluant ce que l’on souhaite avec egrep :
cp -r `ls -A | egrep -v "source1|source2"
Par exemple ici on copie l’arborescence en excluant le sous-dossier dest2 et dest3 :
cp -v `ls -A|egrep -v "dest2|dest3"` /tmp/demo2
Dans cet autre solution, on utilise la commande find pour trouver les répertoires et exclure certains sous-dossiers.
Enfin avec l’option -exec on effectue la copie
find . -type f -not -iname '*/dossier-exclus1/*' -not -iname '*/dossier-exclus2/*' -exec cp '{}' '/dest/{}' ';'
Plus de détails sur l’utilisation de find :
Enfin une autre solution avec rsync qui permet de copier de manière identique une source et une destination
rsync -av --progress dossiersource /dossierdestination --exclude dossier1 --exclude dossier2
Copier des fichiers vers une machine distante
avec SCP
SCP (Secure Copy) est un utilitaire et protocole pour copier des fichiers à travers le protocole SSH.
On peut donc l’utiliser pour copier et transférer des fichiers d’une machine à une machine distante.
Voici la syntaxe :
scp /chemin/fichier <user>@<host>:/chemin/fichier
Pour plus d’explications :
avec rsync
rsync est un utilitaire qui permet de synchroniser un dossier.
Il fonctionne aussi pour synchroniser des dossiers vers une machine distante.
La syntaxe est la suivante :
rsync -artvu ~/dir1 <nomutilisateur>@<machine_distance>:destination_rep
Pour plus d’exemple d’utilisation rsync, suivez cet article complet :