如果我想在 Linux VPS 上(递归地)压缩(或 tar.gz 压缩)路径列表,然后将 ZIP/TAR 通过电子邮件发送给我自己,然后删除 ZIP/TAR,最简单的方法是什么? cron 作业、程序等上的 shell 脚本?
例如,以下是我可能会做的事情:
停止 apache、mysql、postgresql 和 rack
拉链拉上:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/* /home/kerrick/* /var/lib/mysql/* # etc.
将 zip 文件作为附件通过电子邮件发送至
[email protected]
删除 zip 文件
恢复 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”命令,写入(自定义)日志文件或系统日志服务器。