获取最新的备份文件

获取最新的备份文件

我正在谷歌上搜索这个,但这些术语太通用了,我得到了太多的误报,所以嘿,我会在这里问。我确信有一个简单的答案,但我通常不会在 *nix 中编写脚本。

我正在尝试为我们的测试环境编写数据库刷新脚本。备份是从 smbfs 共享安装的,例如/data/backups/prod,但子文件夹有点棘手。看起来像myproddbserver/yyyymmdd,下面有一堆文件。

我想执行一个命令restore,从最近的yyyymmdd目录中收集已知名称的文件。例如,如果我有:

myproddbserver/20130630/foo.bak
myproddbserver/20130630/bar.bak
myproddbserver/20130731/foo.bak
myproddbserver/20130731/bar.bak

我想恢复myproddbserver/20130731/foo.bakmyproddbserver/20130731/bar.bak.

我如何可靠地获得这些路径?

答案1

由于您使用的是yyyymmdd格式,因此数字排序可以很好地工作。最快的方法是使用sort命令:

newest_dir=$(printf '%s\n' myproddbserver/* | sort -rn | head -n1)

您也可以在纯 bash 中执行此操作:

newest=0
for d in myproddbserver/*; do
    (( d > newest )) && newest=$d
done

newest_files=("myproddbserver/$newest/"*)
printf '%s\n' "${newest_files[@]}"

bash 版本可能较慢,但会处理所有可能的文件名。sort如果任何文件名包含换行符,该方法将失败。

相关内容