Назад | Перейти на главную страницу

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

У меня есть файл .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). Могу ли я что-нибудь сделать, чтобы записать компакт-диск в новейший каталог?

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

mkdir -p /some/dir/$DATE

cd /some/dir/$DATE

и т.д