运行命令来解压带时间戳的文件夹中的文件?

运行命令来解压带时间戳的文件夹中的文件?

我有一个 .tar 文件,每天晚上都会由我们的一个客户管理系统传输到我们的服务器。该文件是一个压缩的 .sql 文件,我需要将其解压并转储到我们的数据库中。

.tar 文件的目录是/root/backups/premvet_sync/2012.07.17.10.09.19。如您所见,目录是文件上传到我们服务器的时间戳。

我正在尝试创建一个 cron 作业,将 CD 放入目录,然后解压缩它。我通常使用的命令如下:

cd /root/backups/premvet_sync/2012.07.17.10.09.19 && tar -xvf backupfile.tar

显然,该命令只会运行一次(当时间戳与 cron 作业路径匹配时)。我可以做什么来 CD 进入最新目录?

如果有任何区别的话,服务器正在运行 Ubuntu 10.04 LTS。

更新

对于任何感兴趣的人,这里是最终的(有效的) bash 脚本。

#!/bin/sh
# Untar backup database and dump into local mysql server.

echo "Finding latest backup directory"
dir=$(ls -td1 /root/backups/backup/* | head -1)

echo "Opening latest backup directory"
cd $dir

echo "Uncompress backup
tar -xvf backup.tar

echo "Dig down into correct directory"
cd $dir/backup/databases/MySQL

echo "mysqldump the compressed database file"
gunzip < backup.sql.gz | mysql -u USERNAME -pPASSWORD restore_db_name

echo "Done."

答案1

您可以使用ls -t按最新的第一顺序列出内容/root/backups/premvet_sync/,然后将其传递给 head 以获取第一行

dir=$(ls -td1 /root/backups/premvet_sync/* | head -1)

将投入/root/backups/premvet_sync/2012.07.17.10.09.19$dir这样你就可以

cd $dir
  • -t 按修改时间排序
  • -1 每行列出一个文件
  • -d 列出目录条目而不是内容,...

答案2

DATE=`date +%Y%m%d-%H%M%S`

mkdir -p /some/dir/$DATE

cd /some/dir/$DATE

ETC

相关内容