在日常工作中,我们发现很多用户没有定期备份数据的习惯,当被黑客入侵删除数据或是中了勒索病毒后,才后悔莫及。定期备份数据对网站来说,是必不可少的管理工作。
如果只是本地定期备份数据,是不需要花钱的,有多种方法实现。
1、 手工定期备份
2、 编写脚本定期备份
3、 使用免费备份软件
手工定期备份,这个没啥说的,就是定期人工将数据打包备份,缺点就是容易忘记,也很琐碎,一般不推荐。
编写定期备份脚本也非常简单,思路:复制文件到备份目录下的日期子目录。
然后使用计划任务定期执行这个脚本就可以了。
Windows代码如下:
@echo off setlocal :: 获取当前日期,格式为YYYY-MM-DD(注意:这里使用了短横线作为分隔符) for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i set datetime=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2% :: 定义源目录和目标目录 set "source=D:\wwwroot" ::需要备份的源目录 set "destination=D:\Backup\%datetime%" ::备份文件存放目录,请勿包含中文 :: 创建目标目录(如果不存在) if not exist "%destination%" mkdir "%destination%" :: 复制文件,包括子目录和隐藏文件 xcopy /E /I /H /C /Y "%source%" "%destination%" :: 提示完成 echo Backup completed at %datetime% :eof endlocal
Linux代码如下:
#!/bin/bash # 获取当前日期,格式为YYYY-MM-DD datetime=$(date +"%Y-%m-%d") # 定义源目录和目标目录 source="/www/wwwroot" # 需要备份的源目录 destination="/backup/${datetime}" # 备份文件存放目录,请勿包含中文 # 创建目标目录(如果不存在) mkdir -p "${destination}" # 复制文件,包括子目录和隐藏文件 # 在Linux中,隐藏文件以"."开头,rsync可以很好地处理这些文件 rsync -av --include='*/' --include='.*' --exclude='*' "${source}/" "${destination}/" # 注意:上面的rsync命令可能不会按预期复制隐藏文件,因为它首先排除了所有文件。 # 一个更简单的方法是使用cp命令的-r(递归)和-a(归档模式,保留属性)选项,但cp不直接支持隐藏文件的特殊处理。 # 如果确实需要复制所有隐藏文件,可以考虑使用find命令结合cp。 # 下面是一个使用find命令的示例: find "${source}" -mindepth 1 -maxdepth 1 -exec cp -rp {} "${destination}/" \; # 但是,上面的find命令只会复制源目录的直接内容,不会递归复制子目录。 # 为了递归复制所有内容(包括隐藏文件和目录),可以使用下面的rsync命令,它经过修正可以正确处理隐藏文件: rsync -a --exclude='*/..?' "${source}/" "${destination}/" # --exclude='*/..?' 排除了源目录本身(如果它是一个单独的目录而不是文件集合的话),但允许递归复制其内容,同时包括隐藏文件。 # 提示完成 echo "Backup completed at ${datetime}"
至于第三种,使用软件自动备份,这个更简单,主要需要一款免费备份的软件,可以使用《护卫神.好备份(免费版)》,安装后添加备份规则(下图一)就可以了。
该软件有如下优点:支持压缩备份、支持一键还原、支持排除文件、支持差异备份、支持压缩分卷、支持文件加密,当然最大的优点是:免费的。
(图一:添加备份任务)
可以设置高级筛选规则,如下图二
(图二:文件筛选)
查看备份日志:
(图三:备份日志)
还支持一键还原备份数据,如下图四
(图四:一键还原备份)