我有一个.tar文件,每晚由我们的一个客户端pipe理系统传输到我们的服务器上。 该文件是一个压缩的.sql文件,我需要解压缩并转储到我们的数据库。
.tar文件的目录是/root/backups/premvet_sync/2012.07.17.10.09.19 。 正如你所看到的,目录是file upload到服务器的时间戳。
我正在尝试创build一个cron作业,将其放入该目录,然后解压缩它。 我通常会使用的命令是这样的:
cd /root/backups/premvet_sync/2012.07.17.10.09.19 && tar -xvf backupfile.tar
显然这个命令只会运行一次(当时间戳与cron作业path相匹配时)。 有什么我可以做的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/的内容,然后将其传递给第一行
dir=$(ls -td1 /root/backups/premvet_sync/* | head -1)
将把/root/backups/premvet_sync/2012.07.17.10.09.19放在$dir这样你就可以了
cd $dir
DATE=`date +%Y%m%d-%H%M%S` mkdir -p /some/dir/$DATE cd /some/dir/$DATE
等等