用于自动备份网站的Bash / Shell脚本

时间:2014-01-29 16:32:37

标签: php bash shell backup synology

我是shell脚本的新手,并一直在寻找如何为我的网站创建备份脚本的示例,但我找不到或至少我理解的东西。

我有一台Synology Diskstation服务器,我想用它(通过其调度程序)自动备份我的网站。

我目前正在通过我的Mac上的Automator与Transmit FTP程序一起完成这项工作,但是这是一个命令行过程,这是我努力的地方。

这是我在脚本中要做的事情:

1)打开不带浏览器的URL(此URL在服务器上创建数据库的mysql转储,以便稍后下载)。示例网址为http://mywebsite.com/dump.php

2)使用FTP从服务器下载所有文件。 (目前Transmit FTP将此处理为同步功能,仅下载远程文件日期比本地文件更新的文件。它还将删除远程服务器上不存在的任何本地文件。)

3)创建步骤2中文件的压缩存档,名为website_CURRENT-DATE

4)将存档从步骤3移至特定文件夹,并删除此特定文件夹中超过120天的任何文件。

现在我不知道如何执行第1步,或者步骤2中的同步(我知道如何使用wget下载整个网站,但这似乎每次运行时都会下载所有内容,即使它没有被改变)。

步骤3和4可能很容易通过搜索找到,但我还没有搜索到,因为我无法通过第1步。

谢谢!

另外,我的网络主机不做这些类型的备份,所以这就是我喜欢自己做的原因。

1 个答案:

答案 0 :(得分:0)

按顺序回答每个问题,然后:

  1. 有几个选项,其中最常见的选项是wget http://mywebsite.com/dump.phpcurl http://mywebsite.com/dump.php

  2. 由于您ssh访问了服务器,因此您可以非常轻松使用rsync来获取磁盘上文件的快照。 G。 rsync -essh --delete --stats -zav username@mywebsite.com:/path/to/files/ /path/to/local/backup

  3. 从[{1}}获得快照后,您可以使用rsync

  4. 制作压缩的日期副本
  5. cd /path/to/local/backup; tar cvf /path/to/archives/website-$(date +%Y-%m-%d).tgz *将删除超过120天的所有备份。