简单的bash备份解决scheme

我在shell脚本方面的经验非常有限,并且希望每周都有一些脚本来支持我的博客(Wordpress)。

这是我到目前为止

#!/bin/bash # Determine current date setenv CURDATE date +%Y%m%d # Backup DB & email it to me mysqldump dbname -u user -ppassword | gzip | uuencode ${CURDATE}dbname.sql.gz | mail -s "backup for dbname ${CURDATE}" [email protected] cd /home/myhome # Zip blog tar cf - blog.mysite.me | gzip - > ~/backups/${CURDATE}blog.mysite.me.tar.gz 

这是我有点卡住了…我正在考虑自己的博客目录电子邮件,但是当这个变得更大,然后10MB左右呢? 我怎么会脚本这分裂这个和给我发电子邮件大块?

我觉得更好的另一个build议是将备份FTP到我拥有的另一个VPS。 但是为了空间的缘故,我只想保留最近的10次备份。 我将如何实现脚本脚本的一部分:

  1. 上传备份
  2. 获取文件列表
  3. 获取当前目录中文件的数量(例如/ home / myhome / backups / blog)
  4. 如果count> 10删除最老

任何帮助/build议或解决这个问题的指针将不胜感激:)

而不是压缩和ftping,在networking上使用rsync。 如果您为每个date创build一个新目录,并使用–link-dest选项将其链接回到以前的目录,则它将只存储更改的文件,而不更改的文件将成为硬链接前一个。

我在Linux服务器的什么备份解决scheme上发布了一些代码

首先,从一个命令使用中设置一个variables

 CURDATE=$(date +%Y%m%d) 

代替

 setenv CURDATE date +%Y%m%d 

如果您只想保留10天的备份,则可以删除10天前创build的备份。 使用相关的date命令find它并保存到另一个variables:

 PAST_DATE=$(date +"%m-%d-%Y" --date="10 days ago") 

其次,您可以使用lftp在一行上执行ftp命令,如下所示:

 lftp -u user,pass server -e "mrm *${PAST_DATE}.sql.gz; exit; 

如果在文件名上使用date,并且每天删除10天的文件,则可以完全按照您的想法进行操作。 您也可以使用lftp来放置文件,它像一个普通的客户端一样工作,只是它在一行上工作。