人若无名,便可专心练剑

linux mail 发送普通附件及数据库备份脚本

  |   0 评论   |   3,048 浏览

    由于自己的需求仅仅是进行数据库备份所以采用uuencode方式发送mysql数据库备份

    如果是debian或者ubuntu系统如果不存在uuencode命令,则采用如下命令进行安装

    sudo apt-get  install sharutils
    如果是centos系统则采用:

    yum install sharutils
    进行安装。

    然后我们就可以编写我们数据库备份脚本并发送到自己的邮箱

    #!/bin/bash
    #备份blog数据库
    mysqldump -u root -pmysqlpassword mydb > mydb.sql
    uuencode -m mydb.sql mydb.sql|mail -s "blog数据库备份" abcd@qq.com
    rm mydb.sql -rf
    
    
    脚本保存为backup.sh

    创建定时执行计划

    [root@c2y2]crontab -e
    1 2 */1 */1 */1 /bin/bash /root/backup.sh
    
    表示每天的凌晨2点1分执行数据库备份脚本。


    这样我们就可以将备份脚本发送到我们的邮箱里边,我们收到邮箱了如何解码出我们自己的文件呢?

    我们收到邮件后,将邮件的内容全部拷贝并粘贴到一个新创建的文本文件中,然后将文件的后缀名改为uue(如我将文件保存为:mydb.uue)

    这还么有得到我们想要的文件呢,我们还需要进一步操作才能得到我们的文件

    如果我们在linux中可以如下命令得到我们的文件

    uudecode -o mydb.sql mydb.uue
    如果我们在windows系统中,我们可以直接采用压缩文件解压得到我们的文件


    后记:

       1, 在创建定时执行计划时:如果我们是root用户,并且创建定时脚本后不能正常执行计划,那么创建计划的时候我们不需要跟我们的用户名,如果跟了反而不能正常执行

        比如我创建的定时执行脚本,就没有跟用户

      [root@c2y2]crontab -e
      1 2 */1 */1 */1 /bin/bash /root/backup.sh
       2,采用uudecode发送文本附件时,特别是含有中文的我们有可能解压出来是乱码,我们可以采用如下方式解决:
         uuencode -m file.txt file.txt|mail -s 'test' abcd@qq.com

        也即是uuencode需要跟一个-m参数,统一才采用base64编码,这样我们解压出来后就不会存在乱码现象了。

       3,这种方式发送附件不推荐大文件采用这种方式,编码解码太麻烦了,我们采用更为强大的mutt发送邮件附件,另外mail 有-a参数提示可以直接跟附件,但是我至今没有成功。出现了如下错误

        待解决:

        clsmtp-server: 551 User not local; please try <forward-path>
        "/root/dead.letter" 15/318




    dropbox:邀请您的加入,让你随时随地同步您的文件:https://db.tt/wCU4HQq4

    人生格言: 今天很残酷,明天更残酷,后天会很美好,但绝大多数人都死在明天晚上,却见不到后天的太阳,所以我们干什么都要坚持!

    评论

    发表评论

    validate