Section courante

A propos

Section administrative du site

Copier des répertoires

La copie de répertoires sous les distributions Linux est une partie importante de chaque routine d'un administrateur système. Si vous travaillez avec Linux depuis un certain temps, vous savez combien il est important de garder vos dossiers bien structurés. Dans certains cas, vous devrez peut-être copier certains répertoires sur votre système afin de réorganiser la structure de votre système de fichiers principal. Voici une brève tutoriel de la façon de procédé.

Copie des répertoires Linux

Pour copier un répertoire sous les distributions Linux, vous devez exécuter la commande «cp» avec le paramètre «-R» pour indiquer récursivement dans les sous-répertoires et spécifier les répertoires source et de destination à copier. Voici la syntaxe :

cp -R dossier_source dossier_destination

À titre d'exemple, disons que vous souhaitez copier le répertoire «/etc» dans un dossier de sauvegarde nommé «/etc_bak». Le dossier «/etc_bak» est également situé à la racine de votre système de fichiers. Afin de copier le répertoire «/etc» dans ce dossier de sauvegarde, vous exécutez la commande suivante :

cp -R /etc /etc_bak

En exécutant cette commande, le dossier «/etc» sera copié dans «/etc_bak».

Copie le contenu du répertoire de manière récursive sous Linux

Pour copier le contenu d'un répertoire de manière récursive, vous devez utiliser la commande cp avec le paramètre -R et spécifier le répertoire source suivi d'un caractère générique.

cp -R dossier_source/* dossier_destination

Compte tenu de notre exemple précédent, disons que nous voulons copier le contenu du répertoire «/etc» dans le dossier «/etc_bak». Pour y parvenir, nous écririons la commande suivante :

cp -R /etc/* /etc_bak

En affichant la liste du contenu du dossier de sauvegarde, vous vous rendrez compte que le dossier lui-même n'a pas été copié mais que son contenu l'était :

ls -l /etc_bak

on obtiendra un résultat ressemblant à ceci :

total 852
drwxr-xr-x  3 root root       4096 Jan 19 18:13 NetworkManager
drwxr-xr-x  4 root root       4096 Jan 19 18:12 X11
drwxr-xr-x  3 root root       4096 Jan 19 18:12 acpi
-rw-r--r--  1 root root       3028 Jan 19 18:07 adduser.conf
drwxr-xr-x  2 root root       4096 Jan 21 13:51 alternatives
drwxr-xr-x  3 root root       4096 Jan 19 18:12 apm
drwxr-xr-x  3 root root       4096 Jan 19 18:13 apparmor
drwxr-xr-x  9 root root       4096 Jan 19 18:15 apparmor.d
drwxr-xr-x  3 root root       4096 Jan 19 18:15 apport
drwxr-xr-x  7 root root       4096 Jan 21 16:01 apt
-rw-r-----  1 root daemon      144 Feb 20  2018 at.deny
-rw-r--r--  1 root root       2319 Apr  4  2018 bash.bashrc
-rw-r--r--  1 root root         45 Apr  2  2018 bash_completion

Copier plusieurs répertoires avec cp

Pour copier plusieurs répertoires sous Linux, vous devez utiliser la commande «cp» et lister les différents répertoires à copier ainsi que le dossier de destination.

cp -R dossier_source_1 dossier_source_2 ... dossier_source_n dossier_destination

À titre d'exemple, disons que nous souhaitons copier le répertoire «/etc» ainsi que tous les répertoires home situés dans le répertoire «/home». Pour y parvenir, nous exécuterons la commande suivante :

cp -R /etc/* /home/* /etc_bak

Copier les répertoires sur les hôtes à distance

Dans certains cas, vous souhaiterez peut-être copier un répertoire afin de conserver une sauvegarde sur un serveur de sauvegarde. Inutile de dire que votre serveur de sauvegarde est localement à distance : vous devez copier votre répertoire sur le réseau. Pour copier des répertoires vers des emplacements à distances, vous devez utiliser la commande rsync, spécifiez le dossier source ainsi que la destination à distance vers laquelle copier. Assurez-vous d'inclure le paramètre «-r» pour «récursif» et l'option «-a» pour «tous» (sinon les fichiers non réguliers seront ignorés). Voici la syntaxe :

rsync -ar dossier_source utilisateur_destination@hote_destination:chemin

Toutefois, si l'utilitaire «rsync» n'est pas installé sur votre distribution Linux, assurez-vous de l'installer en utilisant les privilèges sudo de la manière suivante :

sudo apt-get install rsync
sudo yum install rsync

À titre d'exemple, disons que nous devons copier le dossier «/etc» sur un serveur de sauvegarde situé à 192.168.0.77/24. Nous voulons copier le répertoire dans le «/etc_bak» du serveur à distance, avec le nom d'utilisateur «gladir». Pour y parvenir, nous exécuterons la commande suivante :

rsync -ar /etc gladir@192.168.0.77:/etc_bak

De même, vous pouvez choisir de copier le contenu du répertoire «/etc/» plutôt que le répertoire lui-même en ajoutant un caractère générique après le répertoire à copier :

rsync -ar /etc/* gladir@192.168.0.77:/etc_bak/

Enfin, si vous souhaitez introduire la date actuelle lors d'une sauvegarde de répertoire, vous pouvez utiliser la substitution de paramètre Bash :

rsync -ar /etc/* gladir@192.168.0.77:/etc_bak/etc_$(date "+%F")

Copie à l'aide de la commande scp

Afin de copier le répertoire sous une distribution Linux vers un emplacement à distance, vous pouvez exécuter la commande «scp» avec le paramètre «-r» pour récursive suivie du répertoire à copier et du dossier de destination :

scp -r dossier_source utilisateur_destination@hote_destination:chemin

À titre d'exemple, disons que nous voulons copier le répertoire «/etc» sur un serveur de sauvegarde situé à 192.168.0.77 dans le dossier «/etc_bak». Pour ce faire, vous exécutez la commande suivante :

scp -r /etc gladir@192.168.0.77:/etc_bak/

De la même manière que pour la commande rsync, vous pouvez choisir d'utiliser la substitution de paramètres Bash pour copier votre répertoire dans un répertoire personnalisé sur votre distribution Linux :

scp -r /etc devconnected@192.168.0.77:/etc_bak/etc_$(date "+%F")


Dernière mise à jour : Vendredi, le 22 janvier 2021