Backup
執行命令解壓時間戳文件夾中的文件?
我有一個 .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