Scripting
在目錄中僅保留一定數量的備份(tarball)
在我的 debian 9.4 機器上,我有一個腳本可以自動壓縮和備份我在 srv/ 中的所有文件,日期名稱為 xx-xx-xxxx.tar。它被移動到我的備份/目錄。
我想將文件夾中 .tar 文件(備份)的數量限制為 10 個,並在每次創建新 tar 時刪除最舊的 .tar 文件。
解決這個問題的最佳方法是什麼?這是我的腳本:
#!/bin/bash #Purpose = Backup of Important Data #Created on 17-1-2012 #Author = Hafiz Haider #Version 1.0 #START TIME=`date +%b-%d-%y` # This Command will add date in Backup File Na$ FILENAME=backup-$TIME.tar.gz # Here i define Backup file name format. SRCDIR=/srv/daemon-data # Location of Important Data Directo$ DESDIR=/backups # Destination of backup file. tar -cpzf $DESDIR/$FILENAME $SRCDIR #END
在腳本末尾添加以下內容:
find "$DESDIR/$FILENAME" -type f -mtime +10 -delete
這將在目錄中找到您的備份文件 (tar.gz),並刪除任何超過 10 天的備份。
如果您有可用的 zsh,您可以使用它來補充您的 bash 腳本:
# ... tar -cpzf "$DESDIR"/"$FILENAME" "$SRCDIR" zsh -c 'rm -- "$DESDIR"/backup-*-tar.gz(om[11,-1])'
這裡的意思是要求用文件列表
zsh
呼叫;rm
該文件列表是從萬用字元生成的$DESDIR/backup-*-tar.gz
(我從您的腳本中收集到 - 並添加了引號),後跟一個 zsh “glob qualifier”,在括號中。該 glob 限定符表示按修改時間(最新的優先)“rdero
”(排序)匹配文件;m
然後對該列表進行切片以僅選擇第 11 個及以後的文件 - 然後將其刪除,留下 10 個最新文件。語法的-1
意思是“從列表的末尾倒數”,實際上是指列表的最後一個元素。