我编写了一个脚本,将我的财务电子表格文档备份到另一台硬盘和另一台计算机上。我还用电子邮件设置我的服务器,将cronjob消息发送到我的电子邮件而不是系统邮件。在我的脚本中,我无法弄清楚如果用于检查备份文件的日期和当前日期。这是脚本
#!/bin/bash
mount -t cifs //IP/Share /Drive/Directory -o username=username,password=password
cp /home/user/Desktop/finances10.ods /media/MediaConn/financesbackup/Daily\ Bac$
cp /home/user/Desktop/finances10.ods /Drive/Directory/FinancesBackup/Daily\ Backup/
umount /Drive/Directory
export i=`stat -c %y /media/MediaConn/financesbackup/Daily\ Backup/finances10.o$
export j=`date +%d`
if ["$i"="$j"]; then
echo Your backup has completed successfully. Please check the Daily Backup fo$
echo This message is automated by the system and mail is not checked.
else
echo Your backup has failed. Please manually backup the financial file to the$
echo drive. This message is automated by the system and mail is not checked.
fi
非常简单的脚本。输出是通过电子邮件发送的,因为它是一个cronjob。如果有人可以提供帮助,我会非常感激。提前致谢
答案 0 :(得分:3)
你的代码在帖子中都搞砸了,但无论如何......你应该将'stat -c%Y'(不是%y)的输出与'date +%s'的输出进行比较(不是%) d)。
但是,更好的是,使用md5sum或sha1sum之类的东西来确保备份文件与原始文件真正匹配。
答案 1 :(得分:1)
我强烈建议您检查脚本中的每个命令是否成功。否则,脚本会盲目地(最多)退出并带有成功代码或(最坏的情况下)做一些完全出乎意料的事情。
Here's a decent tutorial关于捕获和处理退出代码。
答案 2 :(得分:1)
此行需要括号内的空格和等号:
if [ "$i" = "$j" ]; then
在此上下文中无需export
变量。
您应该使用vanza建议的格式代码,因为它们对应的格式与Unix纪元以来的秒数相同。
您应该在回显的消息周围加上引号:
echo "some message"
当您粘贴代码(显然是从nano
复制)时,它会被截断。如果您使用less
列出它并从那里复制它可能会更好,因为less
可能会换行而不是截断它们。
答案 3 :(得分:0)
感谢所有的输入。对不起,我从nano复制粘贴,哈哈,没意识到它被截断了。你的所有建议都非常有帮助。我能够使用我的格式做我想要的但只是在括号和等号之间放置空格。我从未使用过md5sum或sha1sum,但会检查出来。再次感谢您的帮助,现在它的工作非常好!