Linux实现本地备份的命令:
mkdir -p /root/backup/`date "+%Y-%m-%d"`
tar -zcvPf /root/backup/`date "+%Y-%m-%d"`/test20230221.tar.gz /root/test20230221/
我们再看下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"
加入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的机器上检查:
使用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