我有一个小的备份bash脚本,是我在工作时为计算机编写的。我已将脚本复制到其中/etc/rc0.d/
并调用了该脚本,K01backup
因此在关闭计算机之前先执行该脚本。它将来自我的计算机(运行Ubuntu 14.04LTS),我的工作副本和位于单独内部SSD上的虚拟机的所有数据备份到外部硬盘驱动器,并将日志输出添加到每个文件夹中的文件中。
这是脚本:
#!/bin/bash
LOG="/syncLog"
VMORIG="/media/SSDData/VM"
PROJORIG="/media/Data/Projects"
DESTROOT="/media/ExtData/Backups"
LOGVM=${DESTROOT}"/VM"${LOG}
LOGPROJ=${DESTROOT}"/Projects"${LOG}
ALLORIG="/"
DESTALL=${DESTROOT}"/All"
LOGALL=${DESTROOT}"/All"${LOG}
echo "STARTED" > ${LOGPROJ}
date +%d.%m.%Y/%H:%M:%S >> ${LOGPROJ}
rsync -avvx --progress --no-whole-file ${PROJORIG} ${DESTROOT} >> ${LOGPROJ}
echo "FINISHED" >> ${LOGPROJ}
date +%d.%m.%Y/%H:%M:%S >> ${LOGPROJ}
echo "STARTED" > ${LOGVM}
date +%d.%m.%Y/%H:%M:%S >> ${LOGVM}
rsync -avvx --progress --no-whole-file ${VMORIG} ${DESTROOT} >> ${LOGVM}
echo "FINISHED" >> ${LOGVM}
date +%d.%m.%Y/%H:%M:%S >> ${LOGVM}
echo "STARTED" > ${LOGALL}
date +%d.%m.%Y/%H:%M:%S >> ${LOGALL}
rsync -avvx --progress --no-whole-file --exclude "/media/*" --exclude "/indel/*" ${ALLORIG} ${DESTALL} >> ${LOGALL}
echo "FINISHED" >> ${LOGALL}
date +%d.%m.%Y/%H:%M:%S >> ${LOGALL}
然后我运行sudo chmod +x /etc/rc0.d/K01backup
使其可执行。最初,脚本需要大约一个小时的时间来执行,并且运行良好。但是有一会儿,我可以在日志文件中看到脚本在我离开工作一个小时后启动(大概是再次启动),并且所有文件都已经是最新的,因此只花了大约一分钟即可运行。
有人知道我做错了什么吗?
该目录中的自述文件指出,该目录中的脚本在关闭电源时仅被调用一次(而在重新引导时不被调用)。
用一个简单的测试程序
#!/bin/bash
LOG=/root/backup.log
date >> $LOG
echo $* >> $LOG
我注意到有一次该程序实际上被调用了两次,一次是不带参数,一次是带参数“ stop”。但是,我无法复制它。
我会建议记录实际调用参数的程序以及和脚本测试$1
是stop
。
通常也将程序backup
放在其中/etc/init.d
并建立指向/etc/rc0.d/K01backup
该脚本的链接,但这不应该以任何方式影响其操作。任何管理此类条目的工具都可以创建/删除这些链接。
基于试用了此基本脚本,OP发现编辑该文件后有一个备份文件:/etc/rc0.d/K01backup~
该备份文件也已执行。从头开始放置backup
文件/etc/init.d/
并建立链接可以防止这种情况发生(与是否存在/etc/init.d/backup~
文件无关)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句