2012-07-12 144 views
1

我有一個腳本,它創建當前日期的備份文件夾中的文件夾。該腳本每天通過cron運行一次。bash腳本通過文件夾名稱刪除日期文件夾

有沒有辦法通過文件夾名稱刪除3天以前的文件夾?像

日期-3?

有效的腳本:謝謝Jo So.該腳本按日期創建一個文件夾。壓縮文件進行備份,堅持他們在您的備份目錄,並清除了超過3天以上的備份:-)

#!/bin/bash 

    cd /home/backups 

    mkdir $(date +%Y-%m-%d) 

    cd /opt/ 

    tar -pczf /home/backups/$(date +%Y-%m-%d)/opt.tar.gz code 

    cd /var/ 

    tar -pczf /home/backups/$(date +%Y-%m-%d)/var.tar.gz work 

cd /home/backups/ 
threedaysago=`date -d "3 days ago" +%Y%m%d` 

for backup in [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 
do 
    backupdate=`echo "$backup" | tr -d -` # remove dashes 

    if test "$backupdate" -lt "$threedaysago" 
    then 
     rm -rf "$backup" 
    fi 
done 

回答

3
threedaysago=`date -d "3 days ago" +%Y%m%d` 

for backup in [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 
do 
    backupdate=`echo "$backup" | tr -d -` # remove dashes 

    if test "$backupdate" -lt "$threedaysago" 
    then 
     rm -rf "$backup" 
    fi 
done 

獨立於mtime工作,我可以告訴你它不會在特別奇怪的角落案例下破解;-)

+0

這是Awsome。謝謝。這工作得很好。如果有人願意使用它,我已經修改了我的腳本。 – rezizter 2012-07-12 13:03:23

0

刪除每日備份(類型爲「普通文件」)的年長超過3天:

rm -f `find $YOUR_BACKUP_DIR -maxdepth 1 -type f -mtime +3` 

find手冊頁:

-mtime n 
      File's data was last modified n*24 hours ago. See the comments 
      for -atime to understand how rounding affects the interpretation 
      of file modification times. 
+0

感謝您的及時回覆。無論如何這樣做是爲了不使用修改日期,而是使用文件夾名稱,因爲文件夾是按日期命名的? – rezizter 2012-07-12 09:41:18

+0

你會有一種情況,你將修改一個文件夾與已經創建的備份? – hovanessyan 2012-07-12 09:47:44

+0

當目錄包含具有奇怪文件名的文件時,您的腳本將會中斷並刪除任意文件。另外,依靠mtime是**非常脆弱,我不會推薦。 – 2012-07-12 10:35:52

相關問題