惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

博客园 - IT之家

关于antd前端组件a-select组件选择无效的问题处理记录 antd前端页面实现浏览器中PDF文件预览(不使用第三方插件 ) swagger文档生成html静态文档 根据Word模板导出word文档,包含文本标签替换为图片,生成列表数据,以及标签替换等功能 asp.net core中webapi接口的动作与参数 .NETCore文件上传将文件保存到docker容器以外的文件夹 liunx服务器通过ssh实现异地备份 mysql常见错误 mysql在liunx下面的自动备份 关于.net6.0中swagger偶尔无法加载接口的问题笔记 VUE对象数组,和普通数组的常用方法 关于VUE项目请示接口报错:Error: Network Error at createError (createError.js:17) at XMLHttpRequest.handleError的问题处理 解决.net6 Docker容器 DateTime.Now 获取时间相差8小时问题(转载) CronExpression使用笔记 vue项目发布到docker nginx的方法总结 VUE项目开发报错:Error in render: "TypeError: Cannot read property 'country' of undefined" vs2022升级后打开项目报错预定义类型system.void未定义或导入” 关于.net6项目发布到docker(nginx)踩到的一些坑 关于.netcore6图片处理(生成缩略图、验证码、加水印)发布到docker(liunx)踩到的坑
liunx下自动备份文件夹
IT之家 · 2023-07-28 · via 博客园 - IT之家

由于系统会实时产生文件(如图片),为了保证数据不会因为系统崩溃或者黑客入侵等原因导致数据丢失,如果使用OSS等文件服务可以不用考虑备份的问题,如果是自己弄的文件服务还是对文件进行定时备份也是有必要的。以下是liunx下面的定时备份文件夹的操作。

1.编辑sh命令,对文件夹进行备份,命令如下:

#!/bin/bash

backup_date=$(date +%Y%m%d%H%M%S)
# 备份目录
backup_dir="/backup/file"
# 判断备份目录是否存在,如果不存在则创建
if [ ! -d "$backup_dir" ]; then
  mkdir $backup_dir
fi

# 执行备份操作,将指定文件夹下的文件复制到备份目录
cp -R /home/data $backup_dir/data_$backup_date

# 压缩备份文件,并将压缩文件存储到备份目录
tar -czvf $backup_dir/data_$backup_date.tar.gz $backup_dir/data_$backup_date

# 删除备份的文件夹
rm -rf $backup_dir/data_$backup_date

#删除该文件夹下超过30天的文件
find $backup_dir -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;

# 记录备份日志,包括备份日期、备份文件名、备份文件大小等信息
backup_size=$(du -h $backup_dir/data_$backup_date.tar.gz | awk '{print $1}')
echo "$backup_date Backup Completed: data_$backup_date.tar.gz ($backup_size)" >> $backup_dir/backup.log

2.创建好备份命令后,需要使用crontab添加定时执行任务,输入crontab -e 将以下命令添加到最后一行 并且保存即可,系统会在2点0分将执行文件备份的命令

0 2 * * * /backup/backup_file.sh >> /backup/log/backup.log 2>&1  # 每天晚上2点执行文件备份命令,并且保存执行日志(包括错误日志)到指定目录/bakcup/log

3. 远程备份到其它服务器,后面会记录如何将文件备份到其它服务器

踩坑记录:

1. 添加了定时执行任务后,发现一直没有执行,当前之前的数据库备份的命令又执行了,后来参考网上说的加个日志输出,才知道是因为权限不足导致命令执行失败,解决方法就是给sh文件加可执行权限,使用   chmod +/backup/backup_file.sh 加上权限即可。

2. 刚开始使用sh backup_file.sh时一直会报错:无法获取"/home/examxx\r" 的文件状态(stat): 没有那个文件或目录,目录明明在存在的,但是一直报这个错,原因是因为我是在windows环境使用的backup_file.sh文件,然后上传至liunx服务器上面的,windows与liunx的换行符是不一样的,所以liunx识别的目录是包含/r的,解决方法就是在原来linux服务器上面打到一个可以执行的sh文件,然后在这个文件的基础上去编辑,重新保存即可。

在windows上面创建的文件上传到liunx上面执行还有可能会这个错误:语法错误: 未预期的文件结尾,原因和解决方法也和上面的方法一样,