背景介绍
scp命令拷贝文件非常好用,但在拷贝大文件时存在一个问题就是连接经常会断开,此时再使用scp进行拷贝会重新拷贝文件。
解决办法
为了解决这个问题。我们可以使用rsync1命令来进行断点续传。命令如下:
rsync -P --rsh=ssh test.zip 192.168.0.1:~/
为了使用方便可以在/etc/profile等系统文件设置alias:
alias rscp="rsync -P --rsh=ssh"
断点续传时需要加上--append参数。
遇到的问题
bash脚本里面使用alias不起作用
Note: aliases are not expanded by default in non-interactive shell, and it can be enabled by setting the expand_aliases shell option using shopt.
注意:在非交互式shell中,缺省情况下不扩展别名,可以通过使用shopt设置expand_aliases shell选项来启用别名。
最后脚本改成:
#!/bin/bash
shopt -s expand_aliases
alias rscp="rsync -P --rsh=ssh"
rscp $(date +%Y%m%d).zip root@k8s01:$K8S_HOME && break
此时解决了我的问题
linux下使用脚本反复重试一个命令
n=0
until [ $n -ge 5 ]
do
command && break
n=$[$n+1]
sleep 15
done
根据下面的表格替换上文中的内容
替换内容 | 功能 |
5 | 重试次数 |
command | 想要重试的命令 |
15 | 重试前等待的时间 |
另外,break这里的作用是,当command执行成功后就会跳出循环,即只在失败时重试。
实例:
n=0
until [ $n -ge 5 ]
do
rscp $(date +%Y%m%d).zip root@k8s01:$K8S_HOME && break
n=$[$n+1]
echo "Replay again......"
done