У меня есть файл .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
DATE=`date +%Y%m%d-%H%M%S`
mkdir -p /some/dir/$DATE
cd /some/dir/$DATE
и т.д