最近在更新博客代码的时候,总会一不小心把本地的一些配置或是本地才用的参数传到线上去(有时更新代码太多,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