2016-06-15 12 views
1

あるフォルダから別のフォルダにファイルをコピーする必要があります。最初のフォルダにはファイルがあります...あるフォルダから別のフォルダにコピーを開始するときに、まだすべてのファイルを持っていません...彼らが来ているので...ファイルがあればコピーする必要があります最初のフォルダに...存在する場合は、他のフォルダにコピーし、そうでなければ、ファイルが到着するまで試してみてください。私は次のコードを準備していますが、それだけでは十分ではありません。私は助けが必要です。一つのファイルでない場合 2つのディレクトリ間でファイルのコピーを制御する

codi=(000 003 006 009 012 015 018 021 024 027 030 033 036 039 042 045 048 051 054 057 060) 
for c in ${codi[@]};do 

FILE=$dir1/gfs.t00z.pgrb2.0p50.f$c 
if [ -f "$FILE" ]; then 
echo "File $FILE exists" 
cp $dir1/gfs.t00z.pgrb2.0p50.f$c $dir2 
else 
echo "File $FILE does not exist" 
cont=100 
until [ $cont -lt 1 ];do 
if [ -f "$FILE" ];then 
cp $dir1/gfs.t00z.pgrb2.0p50.f$c $dir2 
else 
echo "still File $FILE does not exist" $FILE 
fi 
let cont-=1 
echo "$cont" 
sleep 3 
done 
sleep 10 
fi 
done 

は今、このコードは、他のフォルダにコピーしたファイルを、プログラムは再びいくつかの秒後のファイルを検索します...しかし、ファイルが到着すると...プログラムがありませんそれを検出...ループの中で何かが悪いかもしれ... ...

+1

http://shellcheck.net/はあなたの友人で、btwです。ここに投稿する前にコードを実行し、問題を解決することを検討してください。 –

答えて

1

私はシェルスクリプトを愛するが、このユースケースがrsync

を介して実装されるように優れているより多くの情報のためrsync manualを参照してください任意のヘルプ。

Local: rsync [OPTION...] SRC... [DEST] 
Access via remote shell: 
    Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST] 
    Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST 
Access via rsync daemon: 
    Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST] 
     rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST] 
    Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST 
     rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST 

あなたものinotify-toolsパッケージからinotifywait使用することができます例here

があります。

inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE 
do 
    echo need to rsync $MODFILE ... 
done 
+1

投稿の代わりに実際の例を表示することを検討してください:-) – andlrc

+0

Upvote for rsyncしかし、問題のユースケース(ローカルディレクトリのローカル)の簡単な例を提供する必要があります。 – ToVine

関連する問題