リモートサーバーから月別生成レポートを取得するスクリプトを実行しています。リモートサーバーから最新のファイルのみを取得する方法を見つけようとしています。脚本で仕事を見つけることができますか?それともこれは悪い習慣ですか?
for host in "${hosts[@]}"; do
scp "$host":"$remote_path" "$local_target_dir"/filename."$host"
done
ファイル形式=サーバー名_BBC-3.0_2014-06-04_164510_.txt
答え1
ls -rt
SSHを介してサーバーのディレクトリから実行すると、最後に変更されたファイル(ファイル名ではなく最後の変更日に基づいて)を見つけることができます。
fileToCopy=$(ssh "$host" "cd $remote_path && ls -rt | tail -1")
scp "$host":"$remote_path"/"$fileToCopy" "$local_target_dir"/filename."$host"
答え2
日付を確認し、最後のバックアップを考慮するためにそれらを調べることをお勧めします。たとえば、次のようになります。
#!/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