最近在更新博客代码的时候,总会一不小心把本地的一些配置或是本地才用的参数传到线上去(有时更新代码太多,git打包后也不会一一去看)。上传后发现有问题,但是本地又没有线上的配置备份。这下就呵呵了。
今天写了个bash脚本测了一下,还行。
测试目录
/mnt/hgfs/www/t
t文件夹目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 | . ├── backup │ ├── b │ ├── simp.css │ └── t │ ├── bb │ └── test.txt ├── index.html ├── jquery.min.js └── nobackup ├── q │ └── x.txt └── web.css |
bash文件(backup.sh)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/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 ,解压后查看目录结构
1 2 3 4 5 6 | . ├── backup │ ├── simp.css │ └── t ├── index.html └── jquery.min.js |
所列的不备份文件和文件夹都没备份,ok