我正在創建一個腳本來維護應該只保留檔案 7 天的資料庫備份目錄。
這就是我創造的
set vx
BACKUP_DIR=/mounts/prd
myarray=(`cat /u01/postgres_prod_server.txt`)
for SERVER in "${myarray[@]}"
do
echo " SERVER: $SERVER"
if [ -d $BACKUP_DIR/$SERVER ]; then
find $BACKUP_DIR/$SERVER/5431/ -type f -name '*.tar' -mtime 7 -exec rm -rf {} \; | tee /tmp/log.txt | wc -l | xargs echo "Files deleted:" >> /tmp/log.txt;
find $BACKUP_DIR/$SERVER/5432/ -type f -name '*.tar' -mtime 7 -exec rm -rf {} \; | tee /tmp/log1.txt | wc -l | xargs echo "Files deleted:" >> /tmp/log1.txt;
fi
done
這是我想要做的,但它不起作用。
1.我無法列印 find 命令正在洗掉的內容并發送到日志檔案。
uj5u.com熱心網友回復:
-exec不會列印任何內容,但您可以使用-print選項來執行此操作。請參閱https://unix.stackexchange.com/a/503530/527050。
此外,...| tee /tmp/log.txt將截斷日志檔案,因此您需要添加選項-a以保留以前的日志。
最終腳本如下所示:(日志檔案的路徑被使用了兩次,因此您可能希望將其存盤在變數中。)
LOG_FILE=/tmp/log.txt
SEARCH_DIR="$BACKUP_DIR/$SERVER/5431/"
find "${SEARCH_DIR}" -type f -name '*.tar' -mtime 7 \
-exec rm -rf {} \; -print | \
tee -a "${LOG_FILE}" | \
wc -l | \
xargs echo "Files deleted:" >> "${LOG_FILE}";
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/483464.html
