我已经敲了一个快速bash脚本来将备份从一台服务器rsync到另一台服务器,并将它们放在目标服务器上的正确文件夹结构中。
#!/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 root@server.example.com:/backup/2017-07-11/accounts/$user/
done
但我想做的是在rsync命令之前立即添加断点,该命令会提示用户退出脚本或继续。我正在努力的一点是我如何添加一个超时,以便它可以继续,无论任何键输入,脚本继续循环后,让我们说60秒。
有谁知道是否以及如何实现这一目标?
非常感谢。
答案 0 :(得分:3)
您可以使用read -t
read -t5 -n1 -p"press any key in 5 seconds to cancel" && exit
printf "\n%s\n" "continuing"
答案 1 :(得分: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..."