2017-06-07 2 views
1

J'essaie de créer un script shell qui va vérifier un nouveau fichier puis cp dans un conteneur Docker. Le code que j'ai jusqu'à présent est ...inotifywait avec la commande Docker et la variable

#!/bin/sh 


source="/var/www/html/" 
dest="dev_ubuntu:/var/www/html/" 

inotifywait -m "/var/www/html" -e create -e moved_to | 
while read file; do 
    sudo docker cp /var/www/html/$file dev_ubuntu:/var/www/html 
done 

Mais ce code donne l'erreur suivante:

Setting up watches. 
Watches established. 
"docker cp" requires exactly 2 argument(s). 
See 'docker cp --help'. 

Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- 
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH 

Copy files/folders between a container and the local filesystem 

Qu'est-ce que je fais mal?

Répondre

0

Avez-vous des espaces dans vos noms de fichiers? Utilisez les guillemets doubles pour éviter de séparer les noms de fichiers par mots:

echo $file 
sudo docker cp "$file" dev_ubuntu:"$file" 

J'ai également transmises par le nom du fichier pour voir ce qui se passe.

+0

Le nom du fichier avait un espace, j'ai ajouté un "_" pour l'espace. et changé le code en 'sudo docker cp"/var/www/html/$ fichier "dev_ubuntu:/var/www/html' maintenant j'obtiens l'erreur suivante' lstat/var/www/html/var: pas un tel fichier ou directory' – ThomasC

+0

Avec cela, vous voulez éviter les volumes docker, non? Parce que les volumes sont destinés à votre cas d'utilisation – Robert

+0

J'ai modifié ma réponse – Robert