解析linux下ftp自动上传备份文件的脚本

发布时间:2021-01-18编辑:脚本学堂
本文介绍下,在linux下,使用ftp自动上传备份文件的脚本,有需要的朋友,作个参考吧。

情况是这样的:
DB 用RMAN 直接将备份文件放在盘柜上了。
要求把这些备份文件在copy到一个备份服务器上。
RMAN 对目录有严格的要求,以后如果要恢复,还是还原到相同的目录。

曾计划将备份服务器共享之后,直接linuxjishu/9952.html target=_blank class=infotextkey>mount 到DB 服务器上,然后在cp 过去。
后来,决定采用ftp来操作。
备份服务器上安装了Server-U 的FTP 服务,配置好之后,把备份文件传过来即可。

三步实现:
1,查找符合要求的文件,放到一个临时文件夹。
2,在ftp中使用mput 上传,上传完从临时文件夹中删除。
3,在备份服务器上做好删除策略。不然空间会撑满掉。
 
三点说明:
1,如果说只保留2天的话倒简单,在mput 之前用mdelete 把文件全部删除掉,在上传就可以了,因为我这里要保留多天的记录。 所以就只能在备份服务器上在弄个批处理
计划任务来删除了。
2,mput时遇到的问题:它会要求按下回车后在上传。
需要关闭该指令。
 
ftp>prompt
切换交谈式指令,使用mput/mget 时不用每个文件皆询问yes/no
 

复制代码 代码示例:
ftp> help prompt
prompt          force interactive prompting on multiple commands
ftp> prompt
Interactive mode off.
ftp> prompt
Interactive mode on.
ftp> prompt
Interactive mode off.
ftp>
 

不加任何参数就可以进行开发或关闭的设备,每执行一次,状态就会改变。
 
3,find -mtime 参数说明
 

复制代码 代码示例:
find /u01/backup/backupsets -mtime +1 -name "*" :+号 表示 1天前的文件
find /u01/backup/backupsets -mtime -1 -name "*" :表示1天内的文件

Linux上传脚本的完整代码,如下:
 

复制代码 代码示例:
#!/bin/sh
#filename uploadbackup.sh
#edit by www.jb200.com
find /u01/backup/backupsets -mtime -1 -name "*" -exec cp -f {} /u01/backup/backuptmp /;
ftp -n 192.168.88.251 << EOF
user user password
bin
lcd /u01/backup/backuptmp
prompt
mput *
bye
EOF
cd /u01/backup/backuptmp
rm -rf /u01/backup/backuptmp/*
 

将uploadbackup.sh脚本添加到crontab,定时执行。
 
备份服务器上的删除脚本:
 

复制代码 代码示例:
deletebackupfile.bat
forfiles /p E:/db_backup_history/xezf /m * /d -10 /c "cmd /c del @file"
 

将这个bat 文件添加到计划任务,定时执行即可。