2017-06-07 65 views
1

我想創建一個shell腳本,將檢查一個新的文件,然後cp到一個碼頭集裝箱。該代碼我有多遠......inotifywait與Docker命令和變量

#!/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 

但這代碼提供了以下錯誤:

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 

我在做什麼錯?

回答

0

你的文件名是否有空格?使用雙引號,以避免單詞文件名分開:

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

我也迴應了文件名,看看發生了什麼。

+0

文件名沒有空格,我在空格中加了一個「_」。並將代碼更改爲'sudo docker cp「/ var/www/html/$ file」dev_ubuntu:/ var/www/html「現在我收到以下錯誤:lstat/var/www/html/var:目錄' – ThomasC

+0

有了這個你想避免碼頭卷,對吧?因爲卷是用於你的用例 – Robert

+0

我編輯了我的答案 – Robert