Backup

執行命令解壓時間戳文件夾中的文件?

  • July 17, 2012

我有一個 .tar 文件,每晚由我們的一個客戶端管理系統傳輸到我們的伺服器。該文件是一個壓縮的 .sql 文件,我需要將其解壓縮並轉儲到我們的數據庫中。

.tar 文件的目錄是/root/backups/premvet_sync/2012.07.17.10.09.19. 如您所見,該目錄是文件上傳到我們伺服器時的時間戳。

我正在嘗試創建一個將 CD 放入目錄中的 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."

您可以使用ls -t以最新的第一順序列出內容,/root/backups/premvet_sync/然後將其傳遞給 head 以獲取第一行

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

ETC

引用自:https://serverfault.com/questions/408439