压缩 VPS 上的重要文件并通过电子邮件发送给我自己的最简单方法是什么?

压缩 VPS 上的重要文件并通过电子邮件发送给我自己的最简单方法是什么?

如果我想在 Linux VPS 上(递归地)压缩(或 tar.gz 压缩)路径列表,然后将 ZIP/TAR 通过电子邮件发送给我自己,然后删除 ZIP/TAR,最简单的方法是什么? cron 作业、程序等上的 shell 脚本?

例如,以下是我可能会做的事情:

  1. 停止 apache、mysql、postgresql 和 rack

  2. 拉链拉上:

    /etc/httpd/conf/httpd.conf
    /etc/httpd/conf.d/*
    /home/kerrick/*
    /var/lib/mysql/*
    # etc.
    
  3. 将 zip 文件作为附件通过电子邮件发送至[email protected]

  4. 删除 zip 文件

  5. 恢复 apache、mysql、postgresql 和 rack

答案1

您可以使用下一个脚本,当然可以使用您的信息进行更新:

#!/bin/sh

[ -f /etc/redhat-release ] && service httpd stop
[ -f /etc/debian_version ] && service apache2 stop
service mysqld stop
service postgresql stop
#Do the same for rack, not sure what the service is called.

zip -r /tmp/all_needed.zip /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/ /home/kerrick/ /var/lib/mysql/ # etc.
mail -s "test" [email protected] <  /tmp/all_needed.zip
rm -f /tmp/all_needed.zip

[ -f /etc/redhat-release ] && service httpd start
[ -f /etc/debian_version ] && service apache2 start
service mysqld start
service postgresql start
#Do the same for rack, not sure what the service is called.

如果需要,可以将其作为 cron 运行。但实际上,使用 scp 或 ftp 等方式比发送电子邮件更好,因为 zip 包可能太大,无法作为附件发送。

答案2

当然,最简单的方法是使用 cron 作业运行 bash 脚本,其中包含:

  • service使用命令或/etc/init.d脚本调用停止 Apache、MySQL、PostgreSQL 和 Rack
  • 一个或多个tar命令来创建要压缩的文件的 tarball - 将 tarball 放入临时目录,例如 /tmp
  • 使用任何可以处理附件的邮件程序发送 tarball-或者-
  • 对 tarball 进行 base64 编码,并将结果发送到邮件程序
  • 删除 /tmp 中的 tarball(或您正在使用的任何目录)
  • 重新启动服务

此外,您可以在所有步骤之间输入“instrumentation”命令,写入(自定义)日志文件或系统日志服务器。

相关内容