我有一个 .tar 文件,每晚由我们的一个客户管理系统传输到我们的服务器。该文件是一个压缩的 .sql 文件,我需要将其解压缩并转储到我们的数据库中。
.tar 文件的目录是/root/backups/premvet_sync/2012.07.17.10.09.19
. 如您所见,该目录是文件上传到我们服务器时的时间戳。
我正在尝试创建一个将 CD 放入目录然后解压缩的 cron 作业。我通常使用的命令是这样的:
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."
您可以使用
ls -t
以最新的第一顺序列出的内容,/root/backups/premvet_sync/
然后将其传递给 head 以获取第一行将放入
/root/backups/premvet_sync/2012.07.17.10.09.19
,$dir
这样你就可以ETC