在我的shell脚本中,我正在创建我的文件夹的备份。我正在通过cronjob设置此活动,并且时间表不断变化。
它使用时间戳保留备份。喜欢例如:
cd / tmp / BACKUP_DIR
backup_06-05-2014.tar
backup_06-08-2014.tar
backup_06-10-2014.tar
我想要的是,每当我运行脚本时,它应该保留最新的和以前采用的备份。并删除剩余的备份。
就像我现在运行脚本一样,它应该保持
backup_06-10-2014.tar
backup_06-18-2014.tar
并删除所有其他的。我应该使用rm
命令?
答案 0 :(得分:5)
尝试如下:
rm $(ls -1t /tmp/BACKUP_DIR | tail -n +2)
列表按文件的日期名称排序,只剩下两个最新的
答案 1 :(得分:3)
您可以尝试使用find命令删除7天以前的文件,例如:
find /tmp/BACKUP_DIR -maxdepth 1 -type f -name "backup_*.tar" -mtime +6 -exec rm -f {} \;
答案 2 :(得分:0)
使用
rm -rf `ls -lth backup_*.tar | awk '{print $NF}' | tail -n +4`
另一种简化方法
rm -rf `ls -1rt backup_*.tar | tail -n +3`