Executar o comando para descompactar o arquivo na pasta timestamped?

1

Eu tenho um arquivo .tar que é transferido para o nosso servidor todas as noites por um dos nossos sistemas de gerenciamento de clientes. O arquivo é um arquivo .sql compactado que eu preciso descompactar e descarregar em nosso banco de dados.

O diretório do arquivo .tar é /root/backups/premvet_sync/2012.07.17.10.09.19 . Como você pode ver, o diretório é um timestamp de quando o arquivo foi enviado para o nosso servidor.

Estou tentando criar um trabalho cron que o CD esteja no diretório e, em seguida, o descompacte. O comando que usaria normalmente é algo assim:

cd /root/backups/premvet_sync/2012.07.17.10.09.19 && tar -xvf backupfile.tar

Obviamente, esse comando só seria executado uma vez (quando o registro de data e hora corresponder ao caminho da tarefa cron). Há algo que eu possa fazer no CD no novo diretório?

O servidor está executando o Ubuntu 10.04 LTS, se isso faz alguma diferença.

Atualizar

Para quem estiver interessado, aqui está o último script de trabalho.

#!/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."
    
por dannymcc 17.07.2012 / 11:16

2 respostas

2

Você pode usar ls -t para listar o conteúdo de /root/backups/premvet_sync/ na nova ordem mais recente e, em seguida, passar para a primeira linha

dir=$(ls -td1 /root/backups/premvet_sync/* | head -1)

colocará /root/backups/premvet_sync/2012.07.17.10.09.19 em $dir para que você possa

cd $dir
  • -t ordenar por hora de modificação
  • -1 listar um arquivo por linha
  • -d lista entradas de diretório em vez de conteúdo, ...
por 17.07.2012 / 11:24
0
DATE='date +%Y%m%d-%H%M%S'

mkdir -p /some/dir/$DATE

cd /some/dir/$DATE

etc

    
por 17.07.2012 / 11:25