これは私のスクリプトです。
[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つのサーバーにのみコピーされることです。ファイルを削除する前に両方のサーバーにコピーするのに時間がかかるようにスタンバイを追加する方法や方法はありますか?
答え1
rm -f
ループの外側に行を置きます。
答え2
rm -f
ループが完了し、ファイルがすべてのサーバーにコピーされると、ディレクトリが空になるようにこの行の後ろに移動しますdone
(スクリプトの最後の行になるように)。