记;文件备份到smb命令备份

55gY 2,186 0

windows增量备份

@echo off
@rem 目的;实现从本地备份到远程smb
@rem 源;需要备份的文件
set a=F:
@rem smb地址登录账户
set use=bak
@rem smb地址登录密码
set pwd=4f@HEmK!ol5FAi4
@rem 连接需要密码的共享文件夹
net use O: \\192.168.8.244\bak "%pwd%" /user:"%use%"
@rem 目标;需要备份到的文件夹
set b=O:
@rem 开始备份,把a复制到b
robocopy /e /eta /it "%a%" "%b%"
@rem 复制完成后断开共享
net use O: /del /y
exit

linux增量备份

##备份至smb共享
sudo apt-get install smbclient cifs-utils
#挂载smb到本地/smb/
mount -t cifs //192.168.8.244/bak /smb/ -o username=bak,password='4f@HEmK!ol5FAi4'
#增量备份
rsync -avz -exclude={'smb/*','smb'} /backup/ /smb/金蝶/
#卸载smb
umount /smb/

linux脚本备份到SMB

#!/bin/bash

# # 检查crontab工具是否安装
# crontab -l
# # 检查crond服务是否启动
# service crond status

# # 如果未安装服务我们需要进行安装
# yum install vixie-cron
# yum install crontabs
# # 定时任务 每日0点备份
# # 注意别忘记 sh 命令
# crontab -e
# 0 0 * * * sh /root/sqlbackup.sh
# #参考生成工具 https://tool.lu/crontab/
#     第一个* : 分钟(0--59)
#     第二个* : 小时(0--23)
#     第三个* : 日期(0--31)
#     第四个* : 月份(1--12)
#     第五个* : 星期0--7(0或者7表示星期天)
#     comand : 要执行的操作

#设置mssql备份目录
folder=/backup/
day=`date +%Y%m%d%H%M%S`
#数据库服务器,一般为localhost
host=localhost
#用户名
user=sa
#密码
password='***'

#删除N天前的文件(40天)

find /var/opt/mssql/data/backup -mtime +40 -name "*.bak" -exec rm -Rf {} \;

#本机
# 循环获取数据库名称
for line in $(/opt/mssql-tools/bin/sqlcmd \
   -S $host -U $user -P $password \
   -Q "select [name] from master.dbo.SysDatabases where [dbid] > 4")
do
    # 判断是否是数据库名称
    if  [[ $line =~ ^[a-zA-Z0-9_]+$ && $line != 'name' && $line != 'rows' ]]; then
        echo "数据库 $line 开始备份"
        /opt/mssql-tools/bin/sqlcmd \
        -S $host -U $user -P $password \
        -Q "BACKUP DATABASE [$line] TO DISK = N'$folder$line/$line$day.bak' WITH NOFORMAT, NOINIT, NAME = N'$line Backup $day', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,STATS = 10"
    fi
done

##备份至smb共享
#挂载smb
mount -t cifs //192.168.8.244/bak /smb/ -o username=bak,password='4f@HEmK!ol5FAi4'
#增量备份
rsync -avz -exclude={'smb/*','smb'} /backup/ /smb/金蝶/
#卸载smb
umount /smb/

#docker容器
# # 容器名称
# containerId='sql'
# # 循环获取数据库名称
# for line in $(docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
#    -S $host -U $user -P $password \
#    -Q "select [name] from master.dbo.SysDatabases where [dbid] > 4")
# do
#     # 判断是否是数据库名称
#     if [[ $line =~ ^[a-zA-Z0-9_]+$ && $line != 'name' && $line != 'rows' ]]; then
#         echo "数据库 $line 开始备份"
#         docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
#         -S $host -U $user -P $password \
#         -Q "BACKUP DATABASE [$line] TO DISK = N'$folder$line/$line$day.bak' WITH NOFORMAT, NOINIT, NAME = N'$line Backup $day', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,STATS = 10"
#     fi
# done

本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

发表评论 取消回复
表情 图片 链接 代码