每日两点备份怎么写脚本
时间: 2024-01-30 19:39:00 浏览: 40
以下是一个备份脚本的示例,每天在上午2点和下午2点执行备份:
```sh
#!/bin/bash
# 设置备份目录和文件名
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y%m%d-%H%M%S)
FILENAME="backup-$DATE.tar.gz"
# 执行备份
tar -czvf $BACKUP_DIR/$FILENAME /path/to/backup/source
# 输出备份完成信息
echo "Backup completed: $BACKUP_DIR/$FILENAME"
# 设置定时任务
crontab -l > mycron
echo "0 2,14 * * * /path/to/backup/script.sh" >> mycron
crontab mycron
rm mycron
```
在上面的示例中:
- `BACKUP_DIR`是备份文件的存储目录。
- `DATE`是当前时间的格式化字符串,用作备份文件名的一部分。
- `FILENAME`是备份文件的完整名称,包含时间戳和.tar.gz文件扩展名。
- `tar`命令执行压缩备份文件的操作,使用`-czvf`选项来创建tarball并压缩它。
- `echo`命令输出备份完成的信息。
- `crontab`命令设置一个定时任务来在每天的上午2点和下午2点执行备份脚本。
请注意,这只是一个基本的备份脚本示例,需要根据您的特定需求进行修改。例如,您可能需要添加更多的文件或目录来备份,或者修改备份时间。
相关问题
oracle数据库定时备份脚本
### Oracle 数据库定时备份脚本
#### Linux 环境下使用 Cron 实现 Oracle 数据库定时备份
为了实现 Oracle 数据库的自动备份,在 Linux 中可以通过编写 Shell 脚本来调用 `rman` 工具,并利用 cron 来设置周期性调度。
```bash
#!/bin/bash
# 设置环境变量
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
# 日志文件位置
LOGFILE="/backup/logs/rman_backup_$(date +%F_%T).log"
# 执行 rman 命令进行全量备份并将输出重定向到日志文件中
/usr/bin/rman target / <<EOF >$LOGFILE 2>&1
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
RELEASE CHANNEL c1;
}
EXIT;
EOF
```
上述脚本会创建一个完整的数据库备份以及归档日志备份,同时删除已经成功备份过的归档日志。此过程的日志会被保存下来以便后续查看和调试[^4]。
为了让这个脚本能按照设定的时间间隔自动运行,需要将其加入系统的 crontab 文件:
编辑用户的 crontab 列表:
```shell
crontab -e
```
向其中添加一行来指明每天凌晨两点执行该脚本:
```text
0 2 * * * /path/to/your/script.sh
```
这行配置意味着每晚两点半钟将会触发一次数据库备份作业[^1]。
#### Windows 环境下使用 Task Scheduler 实现 Oracle 数据库定时备份
对于 Windows 平台,则可以采用批处理(.bat)配合任务计划程序(Task Scheduler)的方式来达成同样的目的。
下面是一个简单的批处理脚本例子用于启动 RMAN 进行备份操作:
```batch
@echo off
setlocal enabledelayedexpansion
:: 设置必要的环境变量
set ORACLE_HOME=C:\app\oracle\product\19.0.0\dbhome_1
set PATH=%ORACLE_HOME%\BIN;%PATH%
set ORACLE_SID=orcl
:: 记录当前时间戳作为日志名的一部分
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set logfilename=rman_backup_%datetime:~0,8%-%datetime:~8,6%.log
:: 开始执行 RMAN 备份命令并记录日志
"%ORACLE_HOME%\BIN\rman.exe" TARGET / @NUL<<EOL>>C:\Backup\Logs\%logfilename%
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT 'c:\backup\full_db_bak_%datetime:~0,8%';
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
SQL "ALTER SYSTEM SWITCH LOGFILE";
BACKUP CURRENT CONTROLFILE TAG='CTL_FULL';
DELETE NOPROMPT OBSOLETE;
}
EOL
endlocal
exit /b %errorlevel%
```
完成批处理脚本之后,通过图形界面或者 PowerShell 创建一个新的任务计划项,指定其按一定频率(比如每日清晨三点整)去运行刚才编写的 .bat 文件即可达到自动化的效果。
linux Mysql数据库自动备份脚本
为了确保MySQL数据库的安全性和可恢复性,在Linux环境下设置定期自动备份是非常重要的。下面是一个简单的自动化备份脚本示例,它可以帮助你每天定时创建并保存MySQL数据库的备份。
### 自动化备份脚本
#### 脚本内容 (`backup_mysql.sh`)
```bash
#!/bin/bash
# 设置日期格式变量用于区分每次备份
DATE=$(date +%Y%m%d_%H%M%S)
# 定义存储备份文件的目标目录 (请根据实际情况修改)
BACKUP_DIR="/path/to/your_backup_directory"
# 指定 MySQL 登录信息 (如果不需要密码认证,则省略-p选项后的部分)
MYSQL_USER="your_username"
MYSQL_PASSWORD="your_password"
DB_NAME="database_name" # 需要备份的具体数据库名称
# 创建当天日期作为子文件夹存放今天的备份结果
TODAY_BACKUP_PATH="$BACKUP_DIR/$DATE"
mkdir -p $TODAY_BACKUP_PATH
# 使用 mysqldump 工具导出指定数据库并将输出重定向至新建立好的路径下
mysqldump -u$MYSQL_USER -p"$MYSQL_PASSWORD" $DB_NAME > "$TODAY_BACKUP_PATH/${DB_NAME}_$DATE.sql"
if [ $? -eq 0 ]; then
echo "Backup succeeded!"
else
echo "Backup failed!"
fi
# 删除超过7天旧的备份文件(可根据需要调整保留时间),避免占用过多磁盘空间
find $BACKUP_DIR/* -mtime +7 -exec rm -rf {} \;
exit 0;
```
请注意:
- 将 `your_username`, `your_password`, 和 `database_name` 替换成你自己实际使用的值。
- 修改 `/path/to/your_backup_directory` 到你想储存备份的地方。
- 根据需求自定义删除过期备份的时间规则(此处设定为七天前)。
#### 给予执行权限
为了让这个shell script能够被执行,你需要赋予其适当的权限:
```bash
chmod +x backup_mysql.sh
```
#### 添加计划任务(crontab)
最后一步就是安排crontab作业以便系统能按预定频率运行此脚本了。你可以按照以下步骤操作:
1. 编辑当前用户的 crontab 文件:
```bash
crontab -e
```
2. 加入一行新的调度表达式以每天凌晨两点整钟触发一次备份任务:
```
0 2 * * * /full/path/to/backup_mysql.sh >> /var/log/mysql-backup.log 2>&1
```
这将会把所有的标准输出和错误都追加到日志文件当中方便日后查看是否有异常情况发生。
---
通过上述方法配置好之后,你就拥有了一个稳定可靠的Linux平台下的Mysql数据库每日自动备份解决方案啦!
阅读全文
相关推荐














