liunx下自动备份文件夹

发布时间 2023-07-28 11:24:15作者: 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 将以下命令添加到最后一行 并且保存即可,系统会在0点0分将执行文件备份的命令

0 0 * * * /backup/backup_file.sh

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

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

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