Запустить команду для распаковки файла в папке с метками времени?

У меня есть файл.tar, который каждую ночь передается на наш сервер одной из наших систем управления клиентами. Это сжатый файл.sql, который мне нужно распаковать и выгрузить в нашу базу данных.

Каталог файла.tar /root/backups/premvet_sync/2012.07.17.10.09.19, Как вы можете видеть, каталог является отметкой времени, когда файл был загружен на наш сервер.

Я пытаюсь создать задание 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."

2 ответа

Решение

Ты можешь использовать 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
  • сортировать по времени модификации
  • -1 список по одному файлу в строке
  • -d список записей каталога вместо содержимого, ...
DATE=`date +%Y%m%d-%H%M%S`

mkdir -p /some/dir/$DATE

cd /some/dir/$DATE

так далее

Другие вопросы по тегам