2017-07-14 11 views
0

rsyncのバックアップをサーバー間で高速にbashスクリプトを作成して、宛先サーバーの正しいフォルダ構造に配置しました。ユーザの入力を一時停止してからX秒後に続ける

#!/usr/bin/env bash 
fullnaspaths=$(ls -d /poolz1/server.example.com/accounts/*/jbm.*/*/) 
total_paths=$(wc -l <<< "$fullnaspaths") 
for path in $fullnaspaths 
do 
    let COUNTER=COUNTER+1 
    user=$(basename $path) 
    echo [$COUNTER of $total_paths] $user 
    rsync -ia $path [email protected]:/backup/2017-07-11/accounts/$user/ 
done 

しかし、私は何をしたいのですが、すぐにスクリプトを終了するか継続を促すrsyncコマンドの前にブレークポイントを追加することです。私が苦労しているのは、タイムアウトを追加してキー入力に関係なく継続するようにする方法です。スクリプトは60秒後にループを継続します。

これを達成できるかどうか、どのように達成できたかは誰にも分かりますか?

多くのありがとうございます。

+0

を-t読んで使用することができますが、 'sleep'を試してみたのですか?または 'read -t' – 123

答えて

1

私の提案は、gentoo portageのようにすることです。それは5から1までカウントし、キャンセルするにはCtrl + Cを押すべきだと言います。このように:

#!/bin/bash 

echo "Press Ctrl+C to cancel" 
for i in {5..1}; do 
    echo -n "$i " 
    sleep 1 
done 
echo 
echo "Continuing..." 
+0

私はこれと一緒に行きました。私はカウントダウンが好きです;)ありがとう! – willdashwood

1

あなたは

read -t5 -n1 -p"press any key in 5 seconds to cancel" && exit 

printf "\n%s\n" "continuing" 
関連する問題