chatgpt一步步教您:如何轻松备份您的网站到阿里云盘
当你shiyongwordpress建站或者其他方式建站,肯定会遇到定期备份网站的问题,今天分享一个定时自动进行网站备份的操作方法,自动将整站文件和数据库文件备份至阿里云盘。此方法适用于大部分网站备份方法,部分方法在咨询chatgpt后给出完善解决方案。
要在Debian系统上安装阿里云盘CLI(aliyunpan CLI),您可以按照以下步骤操作:
1.添加阿里云盘的存储库:
sudo curl -fsSL http://file.tickstep.com/apt/pgp | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg arch=amd64,arm64] http://file.tickstep.com/apt aliyunpan main" | sudo tee /etc/apt/sources.list.d/tickstep-aliyunpan.list > /dev/null
2.更新存储库并安装aliyunpan:
sudo apt-get update
sudo apt-get install -y aliyunpan
关于您的第二个问题,是的,上面输出的代码应该保存为一个以.sh
后缀的文件。您可以将这个文件放置在任何您方便访问的位置。通常,为了组织和安全考虑,您可以放在例如/home/yourusername/scripts
这样的目录下。
登录aliyunpan
如何获取RefreshToken
第一种
需要通过浏览器获取refresh_token。这里以Chrome浏览器为例,其他浏览器类似。
打开 阿里云盘网页 并进行登录,然后F12按键打开浏览器调试菜单,选择Console按照下面步骤进行
JSON.parse(localStorage.getItem("token")).refresh_token
输出上面代码后 按回车 然后就会出现token
获取到token后接下来进行脚本编写。
编写上传脚本
脚本规则为备份你的网站以及网站对应的数据库同时都已tar格式进行上传,这样有利于备份速度,网站如果已目录方式备份文件较多备份速度慢。
将下面文件命名为backup.sh
#!/bin/bash
# 配置变量
DOMAIN_NAME="www.baizi.net" # 你的域名
WEB_PATH="/www/wwwroot/$DOMAIN_NAME" # 网站根目录
MYSQL_USER="www.baizi.net" # 数据库用户名
MYSQL_PASSWORD="11111111password" # 数据库密码
MYSQL_HOST="localhost" # 数据库主机
MYSQL_PORT="3306" # 数据库端口
MYSQL_DB="www.baizi.net" # 数据库名称
BACKUP_DIR="/www/wwwroot/backup" # 本地备份文件存储目录
ALIYUNPAN_PATH="/Databackup/$DOMAIN_NAME" # 阿里云盘中的目标文件夹路径
DATE=$(date +%Y%m%d%H%M) # 生成日期字符串用于文件命名
# 创建本地备份目录
mkdir -p $BACKUP_DIR
# 登录aliyunpan
# 浏览器开发者模式下console执行以下命令按回车:JSON.parse(localStorage.getItem("token")).refresh_token
aliyunpan login -RefreshToken="980[TOKEN]77"
# 检查并创建阿里云盘目标文件夹
if ! aliyunpan ls "$ALIYUNPAN_PATH"; then
aliyunpan mkdir "$ALIYUNPAN_PATH"
fi
# 备份数据库
#mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT --all-databases > $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql
#mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT $MYSQL_DB > $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql
#mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT $MYSQL_DB | gzip > $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.gz
mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT $MYSQL_DB > $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql
gzip $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql
if [ $? -eq 0 ]; then
echo "数据库备份成功"
else
echo "数据库备份失败"
exit 1
fi
# 上传备份文件到阿里云盘
#aliyunpan upload $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.gz $ALIYUNPAN_PATH
#aliyunpan upload $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql $ALIYUNPAN_PATH
aliyunpan upload $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql.gz $ALIYUNPAN_PATH
#tar -czf $BACKUP_DIR/${DOMAIN_NAME}_web_backup_$DATE.tar.gz $WEB_PATH
#忽略错误的情况下上传备份文件到阿里云盘
tar --warning=no-file-changed -czf $BACKUP_DIR/${DOMAIN_NAME}_web_backup_$DATE.tar.gz $WEB_PATH
if [ $? -eq 0 ]; then
echo "网站文件备份成功"
else
echo "网站文件备份失败"
exit 1
fi
# 使用aliyunpan上传备份文件
#aliyunpan upload $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.gz $ALIYUNPAN_PATH
aliyunpan upload $BACKUP_DIR/${DOMAIN_NAME}_web_backup_$DATE.tar.gz $ALIYUNPAN_PATH
if [ $? -eq 0 ]; then
echo "文件上传成功"
else
echo "文件上传失败"
exit 1
fi
# 清理本地备份文件(可选)
# rm -rf $BACKUP_DIR/${DOMAIN_NAME}_db_backup_$DATE.sql $BACKUP_DIR/${DOMAIN_NAME}_web_backup_$DATE.tar.gz
echo "备份流程完成"
上传脚本到服务器
例如上传脚本文件到/path/to/your/
backup.sh后,
cd /root/backup
给backup.sh脚本赋予权限执行以下代码
chmod +x backup.sh
然后运行backup.sh即可实现备份,运行备份脚本代码如下:
bash backup.sh
即可实现备份,见下图
自动备份方法
1.服务器执行一下命令即可实现自动备份
要实现定期自动备份,您需要将这个脚本添加到cron任务计划中。例如,要每天凌晨1点运行备份脚本,可以使用以下步骤:
- 打开crontab配置:
crontab -e
- 添加以下行到文件中:
0 1 * * * /path/to/your/
backup.sh
代码含义解释
0 1 * * * /path/to/your/script.sh
是一个cron任务计划的格式,它的含义如下:0 1 * * *
:这部分指定了任务的执行时间。0
表示分钟,这里设置为0
意味着在小时的开始时刻。1
表示小时,这里设置为1
意味着凌晨1点。- 第三个星号代表“每一天”。
- 第四个星号代表“每个月”。
- 第五个星号代表“每个星期的任何一天”。
/path/to/your/script.sh
:这是要执行的脚本的路径。
综合起来,这行命令的意思是“在每天凌晨1点执行位于
/path/to/your/script.sh
的脚本”。这里
/path/to/your/backup.sh
是您保存的脚本文件的完整路径。
确保在实施这些步骤之前,您已经在安全环境中测试了脚本,以确保它按照您的期望运行。
2.宝塔面板计划任务实现自动备份
- 登录宝塔面板: 打开宝塔面板,并登录到您的账户。
- 进入计划任务界面: 在宝塔面板的界面上找到“计划任务”功能,通常在面板的左侧菜单中。
- 添加新的计划任务: 点击“添加计划任务”或类似的按钮来创建一个新的任务。
- 配置任务:
- 任务类型:选择执行脚本或命令。
- 任务命令:输入
bash /path/to/your/script.sh
。这将告诉系统执行您的备份脚本。 - 执行周期:根据您的需要设置任务的执行频率,如每天、每周等。
5.保存并启用任务: 确认所有设置正确无误后,保存并启动这个计划任务。
请确保您的脚本在执行前已经正确设置了执行权限(例如,使用命令chmod +x /path/to/your/script.sh
)。在宝塔面板中设置计划任务后,系统将按照您指定的频率自动执行备份脚本。
下载backup.sh文件
特别提醒注意:
如果在执行备份过程中出现以下错误
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
针对您遇到的 mysqldump
权限问题,以下是一个解决方案的步骤概要,基于 Dan Langille's Other Diary 中的文章:
- 检查现有权限: 首先,通过运行
SHOW GRANTS FOR 'your_mysql_user'@'localhost';
检查当前数据库用户的权限。 - 首先执行以下代码后输入数据库管理密码,如果你使用宝塔面板注意数据库root密码
mysql -u root -p
- 添加 PROCESS 权限: 如果发现用户权限不足,您需要为该用户添加
PROCESS
权限。可以通过执行以下 MySQL 命令来实现:GRANT PROCESS ON *.* TO 'your_mysql_user'@'localhost';
- 重新尝试备份: 授予
PROCESS
权限后,再次尝试运行mysqldump
命令备份数据库。 - 权限回退(可选): 如果您想在备份后回退所赋予的额外权限,可以使用
REVOKE
命令:REVOKE PROCESS ON *.* FROM 'your_mysql_user'@'localhost';
请确保在执行这些操作时小心谨慎,特别是在修改数据库用户权限时。这些操作通常需要具有相应权限的数据库管理员身份来执行。在应用任何更改之前,建议您先备份数据库和账户权限设置。
版权声明:本文内容采用 CC BY-NC-SA 4.0
协议许可,转载请注明
文章名称:chatgpt一步步教您:如何轻松备份您的网站到阿里云盘
文章链接:https://www.baizi.net/chatgpt/235.html
文章链接:https://www.baizi.net/chatgpt/235.html
根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24小时内从您的设备中彻底删除下载内容,否则一切后果请您自行承担,如果您喜欢该程序,请购买注册正版以得到更好的服务。
联系方式(#替换成@):serverr#baizi.net
共有 0 条评论