Linux+Shell获取及拷贝最新备份数据
2016-09-30 13:58
573 查看
Linux+Shell获取及拷贝最新备份数据
前面我们介绍了一些脚本配置,今天我们介绍一下,使用Shell脚本如何将指定目录下的最新的文件拷贝到指定目录,我们拷贝前的文件都是压缩文件,而且以备份的日期进行命名的,我们今天介绍两种方式,第一种就是通过文件的最后一次修改时间来判断移动,第二种就是通过获取文件名来进行判断拷贝,具体见下:
我们首先说一下备份脚本,因为我们的源文件是压缩文件,所以介绍一下备份脚本文件;
我们是将/OAFS目录下的ABC目录进行压缩,然后以文件名+日期进行命名
压缩后
接下来就是拷贝了,我们首先通过最后一次文件修改日期来判断进行最新的文件拷贝
我们将执行命令编写成脚本执行
开始执行
接下来我们使用获取文件名命名来判断最新文件的拷贝
我们同样编辑脚本执行
开始执行
前面我们介绍了一些脚本配置,今天我们介绍一下,使用Shell脚本如何将指定目录下的最新的文件拷贝到指定目录,我们拷贝前的文件都是压缩文件,而且以备份的日期进行命名的,我们今天介绍两种方式,第一种就是通过文件的最后一次修改时间来判断移动,第二种就是通过获取文件名来进行判断拷贝,具体见下:
我们首先说一下备份脚本,因为我们的源文件是压缩文件,所以介绍一下备份脚本文件;
我们是将/OAFS目录下的ABC目录进行压缩,然后以文件名+日期进行命名
#!/bin/bash SOURCE=/OAFS/WEAVER TARGET=/OAFS/WEAVER_BACKUP CPEXEC=$(which cp) MKDIREXEC=$(which mkdir) CURDATE=$(date +%Y-%m-%d) BAKDIRTMP=${SOURCE%*/} BAKDIRNAME=${BAKDIRTMP##*/}$CURDATE BASEDIR=${BAKDIRTMP%/*} HOSTNAME=`hostname` if [ ! -d "$SOURCE" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The source $SOURCE is not existed you specified" >>/var/log/${BAKDIRTMP##*/}.log exit 2 fi if [ ! -d "$TARGET" ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - The target $TARGET is not existed you spec ified" >>/var/log/${BAKDIRTMP##*/}.log exit 22 fi cd $TARGET && tar zcf $HOSTNAME.${BAKDIRNAME}.tar.gz -C $BASEDIR ${BAKDIRTMP##*/} if [ "$?" -ne 0 ]; then echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is failed" >>/var/log/${BAKDIRTMP##*/}.log else echo "$(date +%Y-%m-%d_%H:%M:%S) - Backup directory: $SOURCE to $TARGET/${BAKDIRNAME}.tar.gz is successful" >>/var/log/${BAKDIRTMP##*/}.log fi exit 0
压缩后
接下来就是拷贝了,我们首先通过最后一次文件修改日期来判断进行最新的文件拷贝
ls -lt $LOCALBAKDIR | awk {'print $9'} |grep -v ^$ |head -n 1
我们将执行命令编写成脚本执行
#!/bin/bash LOCALBAKDIR="/OAFS/WEAVER_BACKUP" TARGET="/OAFS" function get_last_targz() { echo $(ls -lt $LOCALBAKDIR | awk {'print $9'} |grep -v ^$ |head -n 1) } function copy() { cp $LOCALBAKDIR/$(get_last_targz) $TARGET } copy echo "ok"
开始执行
接下来我们使用获取文件名命名来判断最新文件的拷贝
ls | awk '{match($0,/.{4}-.{2}-.{2}/,a);b[a[0]]=$0;y=a[0]>y?a[0]:y}END{print b[y]}'
我们同样编辑脚本执行
#!/bin/bash LOCALBAKDIR="/OAFS/WEAVER_BACKUP" TARGET="/OAFS" function get_last_targz() { echo $(ls $LOCALBAKDIR | awk '{match($0,/.{4}-.{2}-.{2}/,a);b[a[0]]=$0;y=a[0]>y?a[0]:y}END{print b[y]}') } function copy(){ cp $LOCALBAKDIR/$(get_last_targz) $TARGET } copy echo "OK"
开始执行
相关文章推荐
- Linux+Shell获取及拷贝最新数据到远程设备
- 使用Linux的crontab调用shell中的scp自动备份mysql数据
- 程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据
- linux下拷贝MySql数据库文件备份数据库
- Linux平台和Windows平台下两种自动备份MySQL数据的脚本(Shell&Bat)和步骤
- Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份
- linux通过awk命令,查询日志,分析数据,获取平均时间shell脚本
- VBS脚本获取最新数据备份及重名数据文件
- Linux 平台下 Oracle 数据泵备份(expdp) SHELL 脚本
- Linux操作系统备份之三:通过二进制拷贝(dd)方式实现Linux操作系统数据的备份
- 使用Linux的crontab调用shell中的scp自动备份mysql数据
- 程序员(媛)Shell脚本必备技能之中的一个: 在Linux下怎样自己主动备份mysql数据
- Linux通过Shell对文件自动进行远程拷贝备份
- linux下拷贝MySql数据库文件备份数据库
- Linux 用shell实现重要数据的定期备份
- Linux下使用crontab调用shell中的scp自动备份mysql数据
- ORACLE自动备份并且自动FTP到备份机的SHELL脚本(http://doc.linuxpk.com/456.html)
- Linux环境中Oracle数据导入与导出备份创建用户操作
- 如何从Subversion的dump备份中获取指定目录的数据操作步骤