314 votes

Quelle est la méthode la plus simple pour copier un fichier unique de l'hôte vers l'invité Vagrant ?

J'ai un cas d'utilisation où je veux occasionnellement copier un seul fichier de ma machine hôte vers l'invité Vagrant.

Je ne veux pas le faire via les provisionneurs traditionnels (Puppet / Chef) parce que c'est souvent un cas unique -- je veux juste quelque chose de rapide à ajouter à mon fichier Vagrant.

Je ne veux pas partager un répertoire entier, peut-être parce que je veux écraser un fichier existant sans détruire un répertoire entier sur l'invité.

Il semble également un peu exagéré d'écrire un script script de provisionnement du shell, et de gérer l'échappement potentiel, alors que tout ce que je veux faire, c'est copier un fichier.

Quel est donc le moyen le plus simple de copier un fichier unique de l'hôte vers l'invité ?

306voto

Luca Invernizzi Points 1890

Puisque vous demandez la méthode la plus simple, je vous suggère d'utiliser vagrant-scp . Il ajoute une commande scp à vagrant, afin que vous puissiez copier des fichiers sur votre VM comme vous le feriez normalement avec scp.

Installer via :

vagrant plugin install vagrant-scp

Utilisez-le comme suit :

vagrant scp <some_local_file_or_dir> [vm_name]:<somewhere_on_the_vm>

171voto

Eric P Points 424

Il existe en fait une solution beaucoup plus simple. Voir https://gist.github.com/colindean/5213685/#comment-882885 :

"Veuillez noter qu'à moins que vous ne souhaitiez spécifiquement scp pour une raison quelconque, la manière la plus simple de transférer des fichiers de l'hôte vers la VM est de les placer dans le même répertoire que le fichier Vagrant - ce répertoire est automatiquement monté sous /vagrant dans la VM de sorte que vous pouvez les copier ou les utiliser directement à partir de la VM."

143voto

lynnaloo Points 51

Au lieu d'utiliser un shell provisioner pour copier le fichier, vous pouvez également utiliser un Vagrant provisionneur de fichiers .

Nom du provisionneur : "file"

Le provisionneur de fichiers vous permet de télécharger un fichier de la machine hôte vers la machine invitée.

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end

112voto

BMW Points 4853

Par défaut, la première instance de Vagrant utilise le port ssh 2222, et son adresse IP est 127.0.0.1 (Vous devrez peut-être ajuster le port si vous avez créé plusieurs hôtes virtuels).

==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)

Vous pouvez donc exécuter la commande ci-dessous pour copier votre fichier local dans l'instance de vagrant, et pas seulement vers /vagrant . le mot de passe est le même que le nom d'utilisateur qui est vagrant .

scp -P 2222 your_file vagrant@127.0.0.1:.

Vous pouvez également copier le fichier sur votre hôte local.

scp -P 2222 vagrant@127.0.0.1:/PATH/filename .

79voto

jouell Points 850
vagrant upload localfile

qui placera localfile dans le répertoire personnel de l'utilisateur de vagrant

https://www.vagrantup.com/docs/cli/upload.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X