数据备份学习笔记2

Linux实现本地备份的命令:

mkdir -p /root/backup/`date "+%Y-%m-%d"`
tar -zcvPf /root/backup/`date "+%Y-%m-%d"`/test20230221.tar.gz /root/test20230221/

数据备份学习笔记2_第1张图片

我们再看下tar命令选项:

tar -czvf txt3.tar.gz txt3
tar -xvf txt4.tar.gz

tar常用命令参数说明
tar命令的czvf/xzvf参数分别代表的意义如下:
-c 或--create 建立新的备份文件。
-x或--extract或--get 从备份文件中还原文件。
-z或--gzip或--ungzip 通过gzip指令处理备份文件。
-v或--verbose 显示指令执行过程。
-f<备份文件>或--file=<备份文件> 指定备份文件。

然后现在试着写这个本地备份的脚本:

#!/bin/bash
source_folder=/root/test20230222
backup_folder=/root/backup/`date "+%Y-%m-%d"`
source_folder_name=`echo $source_folder |awk -F "/" '{print $3}'`.tar.gz
echo "source_folder: $source_folder"
echo "backup_folder: $backup_folder"
echo "source_folder_name: $source_folder_name"

mkdir -p /root/backup/`date "+%Y-%m-%d"`

tar -zcvPf $backup_folder/$source_folder_name $source_folder
echo "$source_folder_name file backup succeeded"

数据备份学习笔记2_第2张图片

 

加入crond定时任务并将输出与错误重定向至文件:

编辑添加crond定时任务列表:

设置每天00:00执行一次备份任务,并将标准输出与标准错误重定向至日志文件

crontab -e

0 0 * * * sh /root/backup/compress_backup.sh 2>&1 /root/backup/log_$(date +\%Y-\%m-\%d)

然后是观测任务执行情况:

异地备份:

1、异地备份命令测试:

在192.168.17.180的机器上:

在192.168.17.181的机器上检查:

数据备份学习笔记2_第3张图片

 

使用expect来编写脚本,当提示输入密码的时候可自动对应输入密码。

#!/usr/bin/expect -f

# 获取当前日期 例如:2022-10-12
set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]

# 传输用户名
set username mrswhite

# 对端hostIP地址
set host 192.168.37.9

# 密码
set password test20221012

#设置本地传输路径-前缀
set source_folder /root/backup

#设置兑换传输路径
set backup_folder /root/back_up_offsite

#  expect默认timeout为30S  超过30s未传输完会停止,设置为 -1 则不限制超时时间
set timeout -1

#                    压缩  递归   本地绝对路径           用户名   目标IP   目标路径

 spawn  /usr/bin/scp  -C   -r    $source_folder/$date/   $username@$host:$backup_folder
expect  {
"*yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
}

expect eof

你可能感兴趣的:(Linux系统,运维)