GNU/Linux >> Tutoriels Linux >  >> Linux

Copier des fichiers sous Linux

La copie de documents nécessitait auparavant un membre du personnel dédié dans les bureaux, puis une machine dédiée. Aujourd'hui, la copie est une tâche que les utilisateurs d'ordinateurs effectuent sans arrière-pensée. Copier des données sur un ordinateur est si simple que des copies sont effectuées sans que vous vous en rendiez compte, par exemple lorsque vous faites glisser un fichier sur un lecteur externe.

Le concept selon lequel les entités numériques sont triviales à reproduire est omniprésent, de sorte que la plupart des informaticiens modernes ne pensent pas aux options disponibles pour dupliquer leur travail. Et pourtant, il existe plusieurs manières de copier un fichier sous Linux. Chaque méthode a des fonctionnalités nuancées qui pourraient vous être utiles, selon ce que vous devez faire.

Voici plusieurs façons de copier des fichiers sur Linux, BSD et Mac.

Copier dans l'interface graphique

Conteneurs Linux

  • Que sont les conteneurs Linux ?
  • Une introduction à la terminologie des conteneurs
  • Télécharger :Introduction aux conteneurs
  • Opérateurs Kubernetes :automatisation de la plate-forme d'orchestration de conteneurs
  • eBook :Modèles Kubernetes pour la conception d'applications cloud natives
  • Qu'est-ce que Kubernetes ?

Comme avec la plupart des systèmes d'exploitation, vous pouvez effectuer toute la gestion de vos fichiers dans l'interface graphique, si c'est la façon dont vous préférez travailler.

Glisser-déposer

La façon la plus évidente de copier un fichier est la façon dont vous avez probablement l'habitude de copier des fichiers sur des ordinateurs :le glisser-déposer. Sur la plupart des ordinateurs de bureau Linux, le glisser-déposer d'un dossier local à un autre dossier local déplace un fichier par défaut. Vous pouvez changer ce comportement en une opération de copie en maintenant enfoncée la touche Ctrl après avoir commencé à faire glisser le fichier.

Votre curseur peut afficher un indicateur, tel qu'un signe plus, pour indiquer que vous êtes en mode copie :

Notez que si le fichier existe sur un système distant, qu'il s'agisse d'un serveur Web ou d'un autre ordinateur de votre propre réseau auquel vous accédez via un protocole de partage de fichiers, l'action par défaut consiste souvent à copier, et non à déplacer, le fichier.

Clic droit

Si vous trouvez que le fait de glisser-déposer des fichiers sur votre bureau est imprécis ou maladroit, ou si cela éloigne trop vos mains de votre clavier, vous pouvez généralement copier un fichier à l'aide du menu contextuel. Cette possibilité dépend du gestionnaire de fichiers que vous utilisez, mais généralement, un clic droit produit un menu contextuel contenant des actions courantes.

L'action de copie du menu contextuel stocke le chemin du fichier (où le fichier existe sur votre système) dans votre presse-papiers afin que vous puissiez ensuite coller le fichier ailleurs :

Dans ce cas, vous ne copiez pas réellement le contenu du fichier dans votre presse-papiers. Au lieu de cela, vous copiez le chemin du fichier. Lorsque vous collez, votre gestionnaire de fichiers examine le chemin dans votre presse-papiers, puis exécute une commande de copie, en copiant le fichier situé à ce chemin vers le chemin dans lequel vous collez.

Copier sur la ligne de commande

Bien que l'interface graphique soit un moyen généralement familier de copier des fichiers, la copie dans un terminal peut être plus efficace.

cp

L'équivalent évident basé sur un terminal pour copier et coller un fichier sur le bureau est le cp commande. Cette commande copie des fichiers et des répertoires et est relativement simple. Il utilise la source familière et cible (strictement dans cet ordre), donc pour copier un fichier appelé example.txt dans vos Documents répertoire :

$ cp exemple.txt ~/Documents

Tout comme lorsque vous faites glisser et déposez un fichier dans un dossier, cette action ne remplace pas Documents avec exemple.txt . Au lieu de cela, cp détecte que Documents est un dossier et place une copie de example.txt dedans.

Vous pouvez également, de manière pratique (et efficace), renommer le fichier au fur et à mesure que vous le copiez :

$ cp example.txt ~/Documents/example_copy.txt

Ce fait est important car il vous permet de faire une copie d'un fichier dans le même répertoire que l'original :

$ cp example.txt example.txt
cp :'example.txt' et 'example.txt' sont le même fichier.
$ cp example.txt example_copy.txt

Pour copier un répertoire, vous devez utiliser le -r option, qui signifie --récursif . Cette option exécute cp sur le répertoire inode , puis sur tous les fichiers du répertoire. Sans le -r option, cp ne reconnaît même pas un répertoire comme un objet pouvant être copié :

$ cp notes/ notes-backup
cp :-r non spécifié ; omettre le répertoire 'notes/'
$ cp -r notes/ notes-backup

chat

Le chat La commande est l'une des commandes les plus mal comprises, mais uniquement parce qu'elle illustre l'extrême flexibilité d'un système POSIX. Parmi tout le reste chat fait (y compris son objectif de concat enating files), il peut également copier. Par exemple, avec chat vous pouvez créer deux copies d'un fichier avec une seule commande. Vous ne pouvez pas faire cela avec cp .

L'importance d'utiliser cat copier un fichier est la façon dont le système interprète l'action. Lorsque vous utilisez cp pour copier un fichier, les attributs du fichier sont copiés avec le fichier lui-même. Cela signifie que les autorisations de fichier du doublon sont les mêmes que celles de l'original :

$ ls -l -G -g
-rw-r--r--. 1 57368 25 juillet 23:57  foo.jpg
$ cp foo.jpg bar.jpg
-rw-r--r--. 1 57368 29 juillet 13:37  bar.jpg
-rw-r--r--. 1 57368 25 juillet 23:57  foo.jpg

Utilisation de chat pour lire le contenu d'un fichier dans un autre fichier, cependant, invoque un appel système pour créer un nouveau fichier. Ces nouveaux fichiers sont soumis à votre umask par défaut réglages. Pour en savoir plus sur umask , lisez l'article d'Alex Juarez sur umask et les autorisations en général.

Exécutez umask pour obtenir les paramètres actuels :

$umask
0002

Ce paramètre signifie que les nouveaux fichiers créés à cet emplacement sont accordés 664 (rw-rw-r-- ) autorisation car rien n'est masqué par les premiers chiffres du umask paramètre (et le bit exécutable n'est pas un bit par défaut pour la création de fichier), et l'autorisation d'écriture est bloquée par le dernier chiffre.

Lorsque vous copiez avec cat , vous ne copiez pas réellement le fichier. Vous utilisez chat pour lire le contenu du fichier, puis rediriger la sortie dans un nouveau fichier :

$ cat foo.jpg> baz.jpg
$ ls -l -G -g
-rw-r--r--. 1 57368 29 juillet 13:37  bar.jpg
-rw-rw-r--. 1 57368 29 juillet 13:42  baz.jpg
-rw-r--r--. 1 57368 25 juillet 23:57  foo.jpg

Comme vous pouvez le voir, chat créé un tout nouveau fichier avec le umask par défaut du système appliqué.

En fin de compte, lorsque tout ce que vous voulez faire est de copier un fichier, les détails techniques n'ont souvent pas d'importance. Mais parfois, vous voulez copier un fichier et vous retrouver avec un ensemble d'autorisations par défaut, et avec cat vous pouvez tout faire en une seule commande.

rsync

Le rsync La commande est un outil polyvalent pour copier des fichiers, avec la possibilité notable de synchroniser votre source et votre destination. Dans sa forme la plus simple, rsync peut être utilisé de la même manière que cp commande :

$ rsync example.txt example_copy.txt
$ ls
example.txt    example_copy.txt

Le véritable pouvoir de la commande réside dans sa capacité à ne pas copier quand ce n'est pas nécessaire. Si vous utilisez rsync pour copier un fichier dans un répertoire, mais ce fichier existe déjà dans ce répertoire, alors rsync ne prend pas la peine d'effectuer l'opération de copie. Localement, cela ne signifie pas nécessairement grand-chose, mais si vous copiez des gigaoctets de données sur un serveur distant, cette fonctionnalité fait toute la différence.

Ce qui fait une différence, même localement, cependant, c'est la capacité de la commande à différencier les fichiers qui partagent le même nom mais qui contiennent des données différentes. Si vous vous êtes déjà retrouvé face à deux copies de ce qui est censé être le même répertoire, alors rsync peut les synchroniser dans un répertoire contenant les dernières modifications de chacun. Cette configuration est assez courante dans les industries qui n'ont pas encore découvert la magie du contrôle de version et pour les solutions de sauvegarde dans lesquelles il existe une source de vérité à propager.

Vous pouvez émuler cette situation intentionnellement en créant deux dossiers, l'un appelé exemple et l'autre example_dupe :

Exemple de $ mkdir example_dupe

Créez un fichier dans le premier dossier :

$ echo "un"> exemple/foo.txt

Utilisez rsync pour synchroniser les deux répertoires. Les options les plus courantes pour cette opération sont -a (pour archiver , qui garantit que les liens symboliques et autres fichiers spéciaux sont préservés) et -v (pour verbeux , vous informant de la progression de la commande) :

$ rsync -av example/ example_dupe/

Les répertoires contiennent désormais les mêmes informations :

$ cat example/foo.txt
un
$ cat example_dupe/foo.txt
un

Si le fichier que vous traitez comme source diverge, la cible est mise à jour pour correspondre :

$ echo "two">> example/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
un
deux

Gardez à l'esprit que le rsync La commande est destinée à copier des données, et non à agir comme un système de contrôle de version. Par exemple, si un fichier dans la destination devance d'une manière ou d'une autre un fichier dans la source, ce fichier est toujours écrasé car rsync compare les fichiers pour détecter les divergences et suppose que la destination est toujours censée refléter la source :

$ echo "Vous ne reverrez plus jamais cette note"> example_dupe/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
one
deux

S'il n'y a pas de changement, aucune copie n'est effectuée.

Le rsync la commande a de nombreuses options non disponibles dans cp , telles que la possibilité de définir des autorisations cibles, d'exclure des fichiers, de supprimer des fichiers obsolètes qui n'apparaissent pas dans les deux répertoires, et bien plus encore. Utilisez rsync en remplacement puissant de cp , ou simplement comme complément utile.

Plusieurs façons de copier

Il existe de nombreuses façons d'obtenir essentiellement le même résultat sur un système POSIX, il semble donc que la réputation de flexibilité de l'open source soit bien méritée. Ai-je raté un moyen utile de copier des données ? Partagez vos hacks de copie dans les commentaires.


Linux
  1. Copier des fichiers dans le terminal Linux

  2. Déplacer des fichiers dans le terminal Linux

  3. Exemples de commandes Linux Objcopy pour copier et traduire des fichiers objets

  4. Que sont les fichiers fragmentés sous Linux

  5. Copie de fichier Linux avec ETA ?

Commande ls sous Linux pour lister les fichiers

Comment renommer un ou plusieurs fichiers sous Linux

Comment copier un grand nombre de fichiers sous Linux

Comment copier des fichiers et des répertoires dans un terminal Linux

Fichier de copie Linux - Linux CP Made Easy!

Comment compresser un fichier sous Linux