linux复制文件夹备份吗,Linux+Shell获取及拷贝最新备份数据

Linux+Shell获取及拷贝最新备份数据

前面我们介绍了一些脚本配置,今天我们介绍一下,使用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

压缩后

396b85d6675e2bf9fbb88cc7bb4d95d3.png

接下来就是拷贝了,我们首先通过最后一次文件修改日期来判断进行最新的文件拷贝ls -lt $LOCALBAKDIR | awk {'print $9'} |grep -v ^$ |head -n 1

50eb3cf0d94a624a68afcef1a0396ae0.png

我们将执行命令编写成脚本执行#!/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"

d0de4dc0a3954320bc48db60e0485f8b.png

开始执行

6e2455141aa566b5c6be836aeb2788f8.png

接下来我们使用获取文件名命名来判断最新文件的拷贝ls | awk '{match($0,/.{4}-.{2}-.{2}/,a);b[a[0]]=$0;y=a[0]>y?a[0]:y}END{print b[y]}'

d96e94e8dc7d82cf9ea73ae18f73be3e.png

我们同样编辑脚本执行#!/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"

8e496028a73ff6ae1483c074673f57da.png

开始执行

ccf7c616c24ab36d867fc17bdafcf500.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值