リモートサーバーで毎月生成されるレポートを取得するスクリプトを実行しています。リモートサーバーからのみ最新のファイルを取得する方法を見つけようとしていました。スクリプトで仕事を見つけるのでしょうか、それとも悪い習慣ですか?
for Host in "${hosts[@]}"; do
scp "$Host":"$remote_path" "$local_target_dir"/filename."$Host"
done
ファイル形式= servername_BBC-3.0_2014-06-04_164510_.txt
ディレクトリ内のサーバーでSSH経由でls -rt
を実行して、(ファイル名ではなく最終変更日に基づいて)最終変更ファイルを見つけることができます。
fileToCopy=$(ssh "$Host" "cd $remote_path && ls -rt | tail -1")
scp "$Host":"$remote_path"/"$fileToCopy" "$local_target_dir"/filename."$Host"
私はあなたの日付を検証することを見つけて、最後のバックアップを考慮に入れることを提案します、例えば:
#!/bin/bash
day=${date +%d}
last_month=${date -d "-1 month" date +%Y-%m-%d}
if [ $day -eq 15]
then
echo "Is 15th, time to make get last backup!"
scp -P port user@server:/dir/servername_BBC-3.0_$last_month* destination
fi