一、流程步骤解释
1. 定义变量:
设置用于访问远程共享目录的用户名和密码。
定义远程共享目录路径。
定义本地挂载点。
2. 挂载远程共享目录:
先卸载本地挂载点,避免异常。
使用 mount 命令将远程共享目录挂载到本地路径。
3. 本地备份:
定义本地备份路径和备份文件名。
检查并创建本地备份目录。
使用 tar 命令将系统备份到本地备份文件,排除不需要备份的目录。
4. 检查挂载:
-
定义远程目录下的日志文件,用于判断路径是否成功挂载。
-
检查日志文件是否存在以判断挂载是否成功。
如果挂载失败,记录失败日志。
如果挂载成功,执行以下操作:
记录挂载成功日志。
复制本地备份文件到远程共享目录。
删除本地备份文件。
删除远程3天前的备份文件,并记录日志。
记录备份成功日志。
二、详细脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #!/bin/sh #此脚本用于将linux系统备份到windows共享文件夹或NAS服务器, #原理是1.备份系统到本地2.挂载远程路径到linux3.将备份文件复制到该路径下4.删除过期的备份文件、断开连接
# 1. 定义变量 username='backup' # 访问远程共享目录的用户名 password='backup' # 访问远程共享目录的密码 remotepath="//172.29.60.22/backup/linux/oracle" # 远程共享目录路径
localpath="/backup22" # 本地挂载点 umount $localpath # 先卸载本地挂载点,避免异常
# 2. 挂载远程共享目录到本地 mount -t cifs -o username=$username,password=$password $remotepath $localpath
# 3. 定义本地备份路径和文件名 localBackupPath="/usr/localbackup" backupToFile=$localBackupPath/$HOSTNAME"_backup`date +%y%m%d`.tgz"
# 4. 定义要删除的3天前的备份文件路径 beforeThreeDayFile="/backup22/oradb_backup`date -d -8day +%y%m%d`.tgz"
# 5. 检查并创建本地备份目录 if [ ! -d "$localBackupPath" ]; then mkdir $localBackupPath fi
# 6. 备份系统到本地备份文件 tar -cvpzf $backupToFile --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media --exclude=$localBackupPath --exclude=$localpath /
# 7. 定义远程目录下的日志文件,用于判断路径是否成功挂载 logFile="/backup22/backup_log_in22.txt"
# 8. 检查挂载是否成功 if [ ! -f "$logFile" ]; then echo -e "`date +%y%m%d_%T`挂载失败\n" >> "/backup22/backup_log_local.txt" echo -e "`date +%y%m%d_%T`挂载失败\n" else echo -e "`date +%y%m%d_%T`已挂载备份服务器到本地\n" >> "$logFile" # 9. 复制备份文件到远程共享目录 cp $backupToFile $localpath # 10. 删除本地备份文件 rm -f $backupToFile # 11. 删除远程3天前的备份文件 rm -f $beforeThreeDayFile echo -e "\n三天前的文件已删除"$beforeThreeDayFile >> "$logFile" # 12. 记录备份成功日志 echo -e "\n`date +%y%m%d_%T`备份成功_"$backupToFile >> "$logFile" echo -e "\n`date +%y%m%d_%T`备份成功_"$backupToFile fi
|
三、原纪录
https://blog.csdn.net/lglglgl/article/details/80334546