shell脚本实现scp远程文件拷贝 zip压缩与tar打包

实现思路:

  • 验证当前使用系统的用户,root才可以执行脚本
  • 备份操作打印日志需要时间戳信息
  • 要备份的文件需要先在本地打包,zip压缩和tar压缩
  • mkdir备份路径,每次保留最新版本
  • 脚本执行失败,退出:exit 1
  • $? != 0表示上一条指令执行失败
#!/bin/bash
user=`whoami`
if [ "$user" != "root" ];then
	echo "you are not root,su root:"
		su root
else
	echo "check root successfully"
fi

today=`date +%Y-%m-%d-%H:%M:%S`
srcdir_sql=/root
srcdir_pic=/root/pic
localsrcdir=/root/backupsrcdir       # not exist
remoteip=x.x.x.x
remotedir=/root/backupdesdir         # not exist 
backuplog=$srcdir_sql/mybackup.log   # will touch a mybackup.log in srcdir_sql
echo $today"*****************************************">>$backuplog
echo $today"-info----------back up init success">>$backuplog


# tar local srcfile:sql and pic
# mkdir localsrcdir
if [ ! -d $localsrcdir ];then
	mkdir $localsrcdir
	if [ "$?" != 0 ];then
		echo $today"-error----------fail to mkdir localsrcdir">>$backuplog
	exit 1
	else
		echo $today"-info----------success to mkdir localsrcdir">>$backuplog
	fi
else
	rm -rf $localsrcdir
	mkdir $localsrcdir
	if [ "$?" != 0 ];then
		echo $today"-error----------can not create localsrcdir,please try again">>$backuplog
	exit 1
	else
		echo $today"-info----------rm and create localsrcdir success">>$backuplog
	fi
fi
echo $today"-info----------start gzip pic file">>$backuplog
# zip pic file
piczip=piczip.zip
if [ ! -d $piczip ];then
	zip -r piczip.zip $srcdir_pic
	if [ "$?" != 0 ];then
		echo $today"-error----------fail to zip pic">>$backuplog
		exit 1
	else
		echo $today"-info----------success to zip pic">>$backuplog
	fi
else
	rm -rf $piczip
	zip -r piczip.zip $srcdir_pic
fi

cp $srcdir_sql/shop.sql $localsrcdir
cp $piczip  $localsrcdir

# tar localsrcdir
localsrcdir_tar=backup_sqlandpic.tar.gz
if [ ! -d $localsrcdir_tar ];then
	tar -zcPf backup_sqlandpic.tar.gz $localsrcdir
	if [ "$?" != 0 ];then
		echo $today"-error----------fail to tar localsrcdir">>$backuplog
		exit 1
	else
		echo $today"-info----------success to tar localsrcdir">>$backuplog
	fi
else
	rm -rf $localsrcdir_tar
	tar -zcPf backup_sqlandpic.tar.gz $localsrcdir
fi

if [ ! -d $remotedir ];then
	mkdir $remotedir
	if [ "$?" != 0 ];then
		echo $today"-error----------fail to mkdir remotedir">>$backuplog
		exit 1
	else
		echo $today"-info----------success to mkdir remotedir">>$backuplog
	fi
else
	rm -rf $remotedir
	mkdir $remotedir
fi

# send tar backup to remote
scp $localsrcdir_tar $remoteip:$remotedes
passwd="0000000000"
/usr/bin/expect<<-EOF
set timeout 3
spawn ssh root@x.x.x.x
expect{
"*password:"{send "$passwd\r"}
}
interact
expect eof
EOF
if [ "$?" != 0 ]
then
    echo $today"-error----------scp backup file error" >> $backuplog
    exit 1
fi
echo $today"-info----------scp bakup file successfully" >> $backuplog
echo "scp bakup file successfully"	

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值