在远程磁盘上创建一个旋转备份的脚本

时间:2012-03-06 09:49:11

标签: mysql bash shell rsync mysql-python

首先,我在shell脚本方面完全迷失了,所以我期待一个相当简单的解决方案。我只是不知道在哪里找到它。

情况是这样的:我们正在运行一个应用程序,我们从中进行备份(呃!)。该应用程序附带自己的备份脚本,运行时会创建一个文件夹,其中包含当前日期和时间的名称。其中包括数据库转储和一些类似的配置文件:

# cd backup
# ll
drwxr-xr-x 2 root root 4096 Mar  6 02:30 2012-03-06_02-15 
# ll 2012-03-06_02-15
-rw-r--r-- 1 root root   26706579 Mar  6 02:16 Application.tar.gz
-rw-r--r-- 1 root root      26060 Mar  6 02:15 Config.tar.gz
-rw-r--r-- 1 root root 5503574530 Mar  6 02:21 DatabaseBackup.sql.gz

然后将备份文件夹rsync到网络驱动器。

该脚本还允许使用参数来保留备份的天数。哪个好。但现在我们开始关注生产服务器上的磁盘空间了。

复制脚本功能以转储数据库并压缩配置不是问题。

但我丢失的地方就在这里:理想情况下,我希望在生产服务器上保留最新备份,并将X备份保留在网络驱动器上。

我认为这不应该太难使用bash(或者可能期望?)

2 个答案:

答案 0 :(得分:2)

我会使用find命令代替管道。

生产服务器上的find /path/to/backups -mtime +1 -exec rm {} \;和备份服务器上具有更高-mtime的相同命令。 IBM在其developerworks站点上有一个great resource for using find用于进一步阅读。

答案 1 :(得分:0)

以下内容将删除目录中最新项目以外的所有内容:

ls -lrt | grep -v total | awk '{print $9}' | head -n -1 | xargs rm 

如果您需要X个剩余项目,可以将head -n -1更改为head -n -X