我是shell脚本的新手,一直在寻找如何为我的网站创建备份脚本的示例,但我找不到什么,或者至少找不到我能理解的东西。
我有一个Synology Diskstation服务器,我想用它自动(通过它的调度器)备份我的网站。
我目前正在通过Mac上的Automator和Transmit FTP程序来完成这项工作,但让这成为一个命令行过程是我很难做到的。
这就是我在脚本中想要做的:
1) 在没有浏览器的情况下打开一个URL(这个URL在服务器上创建一个数据库的mysql转储,稍后下载)。示例url为http://mywebsite.com/dump.php
2) 使用FTP从服务器下载所有文件。(当前传输FTP将此作为同步功能处理,只下载远程文件日期比本地文件新的文件。它还将删除远程服务器上不存在的任何本地文件)。
3) 从步骤2中创建文件的压缩档案,命名为website_CURRENT-DATE
4) 将归档文件从步骤3移动到特定文件夹,并删除该特定文件夹中超过120天的任何文件。
现在我不知道如何执行步骤1或步骤2中的同步(我知道如何使用wget下载整个网站,但似乎每次运行时它都会下载所有内容,即使它没有更改)。
步骤3和4可能很容易通过搜索找到,但我还没有搜索过,因为我无法通过步骤1。
谢谢!
此外,仅供参考,我的网络主机不做这些类型的备份,所以这就是我喜欢自己做备份的原因。
按顺序回答每个问题,然后:
-
几个选项,其中最常见的是
wget http://mywebsite.com/dump.php
或curl http://mywebsite.com/dump.php
之一。 -
由于您有
ssh
访问服务器的权限,因此可以非常轻松地使用rsync
来获取磁盘上文件的快照,例如rsync -essh --delete --stats -zav username@mywebsite.com:/path/to/files/ /path/to/local/backup
。 -
一旦您从
rsync
获得了快照,您就可以使用cd /path/to/local/backup; tar cvf /path/to/archives/website-$(date +%Y-%m-%d).tgz *
制作一个压缩的、有日期的副本 -
find /path/to/archives -mtime +120 -type f -exec rm -f '{}' ;
将删除所有超过120天的备份。