天天看點

linux打包備份檔案夾,Linux下使用Bash腳本備份并打封包件夾

最近在更新部落格代碼的時候,總會一不小心把本地的一些配置或是本地才用的參數傳到線上去(有時更新代碼太多,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