我正在创建一个bash脚本来自动执行备份我在Web开发虚拟机中的虚拟主机的任务。我知道有更好的方法就像使用备份管理器一样,但我只想要一个快速的&在我结束搞砸虚拟机的情况下,对我的开发文件进行物理备份的脏方法。
目前,这是我目前写的(我不是一个bash大师,所以是仁慈的哈哈):
cd sites
for d in `find -maxdepth 1 -mindepth 1 -type d`; do
mysqldump --user=XXXXXXXX --password=XXXXXXXX `echo $d | sed -r 's/^.{2}//'` > `echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.sql
if [$d -eq "./r4.dev"]; then
zip -r -9 `echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.zip {$d,`echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.sql} -x *documentation*
else
zip -r -9 `echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.zip {$d,`echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.sql} -x *framework*
fi
rm `echo $d | sed -r 's/^.{2}//'`-`date +"%d%m%Y"`.sql
done
cd ..
该方案背后的逻辑如下:所有域都获得了我正在开发的PHP框架的符号链接,该框架位于另一个域(r4.dev)中。我想要的是开发文件要压缩除文档文件夹之外的所有域。在任何其他域中,我想将除符号链接之外的所有内容压缩到框架中,因为如果它存在,它会结束备份整个框架文件夹,并且我希望获得最小尺寸的备份。
备份命令本身可以工作,但失败的是目录比较。我一直在尝试不同的组合,例如$d -eq "./r4.dev"
,"$d" = ./r4.dev
,"$(basename "${d}")" -eq "./r4.dev"
和其他一些组合,但似乎都没有。
我确信解决方案相当简单,但我现在似乎无法看到它。你可以给我一个关于如何纠正比较的提示,以便它能像我期望的那样工作吗?
提前致谢, 胡