【问题标题】:Bash/Shell Script for automatic backup of website用于网站自动备份的 Bash/Shell 脚本
【发布时间】:2014-01-29 16:32:36
【问题描述】:

我是 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。

谢谢!

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

【问题讨论】:

  • 您是否只想使用 PHP 脚本来执行此操作?编写批处理脚本或其他脚本语言可能更容易。
  • 外部托管网站真的是您的主副本吗?我认为你会在你自己的 PC 或服务器上拥有你开发的主机,然后在你进行可发布的更改时偶尔推送。然后你在本地备份你的开发系统。
  • @fedorqui 谢谢!......那么像 curl --silent example.com 这样的东西会这样做吗?
  • @mmbratch - 这是一个使用 CMS 的网站,所以我真的不做任何开发,是的,因此它基本上是大师。
  • @Joey,Synology NAS 运行的是 linux,所以我想我会写一个 .sh 脚本

标签: php bash shell backup synology


【解决方案1】:

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

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

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

  3. rsync 获得快照后,您可以使用cd /path/to/local/backup; tar cvf /path/to/archives/website-$(date +%Y-%m-%d).tgz * 制作一个压缩的、注明日期的副本

  4. find /path/to/archives -mtime +120 -type f -exec rm -f '{}' \; 将删除所有超过 120 天的备份。

【讨论】:

  • 1) 使用 curl ... 工作正常! 2) 无法使用 rsync,因为 webhost 已禁用(端口被拒绝)。我还没问能不能打开,所以现在我在测试wget的镜像功能……当然要下载全站。 3和4似乎很容易......所以我想我已经准备好了。再次感谢。我会报告的,以防其他人偶然发现这个!
  • 仅供参考:如果您无法让rsync 运行,您可以使用scp -r,但这不会显示已删除的文件,FTP 也不会。
  • 我的 Webhost 不允许 SSH(在我说我允许之前...我的意思是我的本地 Synology 服务器)。这是否意味着我无法在本地进行增量同步/镜像站点并在本地文件不再位于主机上时删除它们?
  • 除了拍摄完整的快照并将其与下一个快照进行比较之外。也许您可以使用rsync 来比较今天和昨天的本地数据。
  • lftp 使用带有--delete 选项的mirror 命令删除不在远程站点上的文件怎么样?
猜你喜欢
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多