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") |