最近在更新部落格代碼的時候,總會一不小心把本地的一些配置或是本地才用的參數傳到線上去(有時更新代碼太多,git打包後也不會一一去看)。上傳後發現有問題,但是本地又沒有線上的配置備份。這下就呵呵了。
今天寫了個bash腳本測了一下,還行。
測試目錄
/mnt/hgfs/www/t
t檔案夾目錄結構.
├── backup
│ ├── b
│ ├── simp.css
│ └── t
│ ├── bb
│ └── test.txt
├── index.html
├── jquery.min.js
└── nobackup
├── q
│ └── x.txt
└── web.css
bash檔案(backup.sh)#!/bin/bash
#要備份的目錄位置(不包含該目錄)
backupPath=/mnt/hgfs/www
#備份的目錄名稱
backupFileName=t
#不備份的目錄名稱(或檔案)
noBackupFileNameArr=("nobackup" "backup/t/bb" "backup/b" "backup/t/test.txt")
#儲存位置
savePath=/root
#儲存的包名,名稱 如:2017-11-07-jam00.tar.gz
saveName=$(date +%Y-%m-%d)-jam00.tar.gz
#===================以下勿改=========================
pathStr=""
for v in ${noBackupFileNameArr[@]}; do
pathStr="$pathStr --exclude=$backupFileName/$v";
done
#隻保留最近七天的備份
oldBackup=$savePath/$(date -d "7 days ago" +'%Y-%m-%d')-jam00.tar.gz
rm -f $oldBackup
cd $backupPath
tar $pathStr -zcf $savePath/$saveName $backupFileName
注釋已經很詳細了,這裡說明下 noBackupFileNameArr 這個參數
這是不備份的檔案夾和檔案,可用于緩存目錄,運作日志之類的檔案夾
nobackup,backup/t/bb,backup/b,backup/t/test.txt
都是在檔案夾 t 下面的,要寫好完整的路徑,用雙引号包裹,且用空格隔開
運作 backup.sh (記得添加運權限 -- chmod +x )
在/root下生成了一個打封包件 2017-11-07-jam00.tar.gz ,解壓後檢視目錄結構.
├── backup
│ ├── simp.css
│ └── t
├── index.html
└── jquery.min.js
所列的不備份檔案和檔案夾都沒備份,ok