Запустить команду для распаковки файла в папке с метками времени?
У меня есть файл.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
так далее