这是我的脚本:
[root@hostname ~]# cat ontape.sh
#!/bin/bash
#
sshpass -p 'PASSWORD' ssh root@hostname mkdir -p /home/mybackup/ontape/$(date +%Y-%m-%d)
sshpass -p 'PASSWORD' ssh root@hostname mkdir -p /mybackup/ontape_tmp_backup/$(date +%Y-%m-%d)
for server in $(cat servers.txt)
do
sshpass -p 'PASSWORD' scp /dbbackup/backupdb/ontape/fullsize/* $server/$(date +%Y-%m-%d)"
rm -f /dbbackup/backupdb/ontape/fullsize/*
done
我遇到的问题是,当它运行时,它仅复制到一台服务器,因为它rm -f
在完成后立即执行。有没有办法或者如何在其中添加等待,以便在删除文件之前需要时间复制到两台服务器?
答案1
只需将rm -f
线放在循环之外即可。
答案2
将 移动rm -f
到该行之后done
(以便它是脚本的最后一行),这样当循环完成并且文件已复制到所有服务器时目录将被清空。