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