シェルスクリプト(ksh)を使用してリモートサーバーで現在の日付を持つファイルを見つけ、rcpを使用してそのファイルをローカルサーバーにコピーするにはどうすればよいですか。

シェルスクリプト(ksh)を使用してリモートサーバーで現在の日付を持つファイルを見つけ、rcpを使用してそのファイルをローカルサーバーにコピーするにはどうすればよいですか。

2つのサーバーがあります:1.EOS(Linux RHEL 4)と2.domain1(Solaris 10)

EOS では、ftp rcp scp がブロックされます。

/user/orac/monthly/EOSには、そのパスにOracleデータベースの一部のバックアップファイルが格納されています。私のバックアップは午後9時に終了します。毎日3つのバックアップファイルが作成されます。これら3つのファイルを私のdomain1サーバーにコピーしたいと思います。次のコマンドを使用して、EOSからdomain1に手動でコピーしました。

rcp -p EOS:/user/orac/monthly/daily_backup_ORAC_edshhyjjak_3445_1 .

しかし、特定のファイルの場合は簡単です。しかし、現在の日付のファイルを見つけてローカルサーバーにコピーするにはどうすればよいですか?

ファイルはそうです

-rw-r--r-- 1 oracle dba 9835748338 Mar 18 20:40  daily_backup_ORAC_e6rvgtgt_3445_1
-rw-r--r-- 1 oracle dba   54546677 Mar 18 20:40  daily_backup_ORAC_e7rvfght_3446_1
-rw-r--r-- 1 oracle dba 5454555666 Mar 18 20:40  daily_backup_ORAC_e8rvfdhj_3447_1

今日の日付の3つのファイルをdomain1:/database/backup_eos/適切なパスにコピーします。

アロスが試した

find /user/orac/monthly/ -name daily_backup_ORAC_*' -mtime -exec rcp -p "{}" domain1:/database/backup_eos/ \;

しかし、EOSではrcpがブロックされ、エラーが発生します! domain1でこのコマンドを実行する必要があり、/user/orac/monthly/そのパスからEOSの現在の日付ファイルを見つけてdomain1/database/backup_eos/パスにコピーします。

答え1

EOSでバックアップを実行した後

find /user/orac/monthly/ -name 'daily_backup_ORAC_*' -mtime -1 -print > /var/tmp/todays_backup.txt

ドメイン1で実行

rcp EOS:/var/tmp/todays_backup.txt /var/tmp
for f in $(< /var/tmp/todays_backup.txt)
do
    rcp -p EOS:$f /database/backup_eos/
done

このようにして検索はローカルで行われ、domain2はリストとファイルをインポートするだけです。

$(< )サポートされていない場合

 while read f
 do
    /var/tmp/todays_backup.txt
 done < /var/tmp/todays_backup.txt

関連情報