Products
GG网络技术分享 2025-03-18 16:06 0
最近在入手了阿里云轻量服务器后,发现性价比不错,而且还很稳定。将自己的一个站点放到了上面,接下来需要考虑每天自动备份网站数据库的问题。对于来说,能不用插件就不用插件,直接一个脚本解决的问题。
这里因为考虑到对象存储的私密性,因此考虑到将网站数据自动备份到阿里云的对象存储OSS上面,接下来就是分享这些操作的图文教程。
总体的流程大概如下:在阿里云轻量服务器上挂载对象存储OSS—>编写自动备份脚本—>每日自动备份
对于阿里云轻量服务器,这里比较推荐香港区域,确实比较稳定。可以参考如下文章:
阿里云香港轻量云服务器性能网络2022最新评测
2022年阿里云上云采购季攻略 35元/年最高优惠5000元
接下来先介绍如何挂载阿里云的对象存储OSS。
既然我们要挂载对象存储OSS,那么就要考虑先购买阿里云的对象存储OSS。目前阿里云推出优惠,购买一年40G标准对象存储,只要8.1元/年。
存储包挂载介绍和ESC共性:
简单来说,阿里云轻量走OSS对象存储内网流量不要钱,操作费基本等同于无的价格。因此只要购买对象存储OSS容量即可。
>>>阿里云对象存储OSS独家8.1元/年活动链接<<<
购买的时候记得选择和自己轻量服务器同区域的。比如你的阿里云轻量服务器是香港的,那就选择香港区域的对象存储,如果是上海的,那就选择上海区域的对象存储。如果是国内的话,直接选择大陆通用,不过建议还是同区域会更好。
确认无误后,付款即可。
购买完成后,就可以前往阿里云的后台对象存储的界面创建Bucket了。
在此快速购买存储包然后进入控制台创建bucket
:填写名称及选择区域,记得选择和自己阿里云轻量服务器同样的区域。
用SSH登陆自己的阿里云轻量服务器,先输入如下的命令
wget https://github.com/aliyun/ossfs/releases/download/v1.80.5/ossfs_1.80.5_centos7.0_x86_64.rpm
centos7
为例,其他系统版本ossfs
下载:https://github.com/aliyun/ossfs/releases
yum localinstall ossfs_1.80.5_centos7.0_x86_64.rpm
首先安装gdebi
,然后使用gdebi
安装。
sudo apt-get updatesudo apt-get install gdebi-core
sudo gdebi your_ossfs_package
登录阿里云控制台。单击页面左上方的管理控制台。将鼠标移至右上方的“账号管理”图标选择accessKeys
,然后创建key
。
注意:提示信息中的云账号
AccessKey
是您访问阿里云API的密钥,具有该账户完全的权限,请务必妥善保管。请勿通过任何方式(如Github等)将AccessKey
公开至外部渠道,以免被恶意利用而造成安全威胁。强烈建议您遵循阿里云安全最佳实践,使用RAM子用户AccessKey
来进行API调用。
挂载过程看起来很繁琐,实际上就几步就操作完成了,请耐心看完。
设置bucket name
(购买后创建的bucket名称) 和 AccessKeyId/Secret
信息,将其存放在/etc/passwd-ossfs
文件中,注意这个文件的权限必须正确设置,建议设为640
。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfschmod 640 /etc/passwd-ossfs
my-bucket:my-access-key-id:my-access-key-secret
对应为 bucket名称 : AccessKey ID : Access Key Secret
将OSS bucket
挂载到指定目录:
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
oss endpoint
地址可以在OSS控制台找到 一定要选择内网地址。
示例(以阿里云香港区域轻量为例):
将my-bucket
这个bucket
挂载到/tmp/ossfs
目录下,AccessKeyId
是abcde
,AccessKeySecret
是123456
,oss endpoint
是oss-cn-hongkong-internal.aliyuncs.com
echo my-bucket:abcde:123456 > /etc/passwd-ossfschmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hongkong-internal.aliyuncs.com
挂载成功后可以通过如下命令查看:
df -h
root@centos:~# df -hFilesystem Size Used Avail Use% Mounted on
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 490M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 25G 2.5G 21G 11% /
tmpfs 100M 0 100M 0% /run/user/0
ossfs 256T 0 256T 0% /www/wwwroot/default/ossfs
这样就算挂载成功了。
Q: 如何开机自动挂载ossfs?
首先请参考使用说明,把bucket name
,access key id/secret
等信息写入/etc/passwd-ossfs
,并将该文件权限修改为640。
echo your_bucket_name:your_access_key_id:your_access_key_secret > /etc/passwd-ossfschmod 640 /etc/passwd-ossfs
接下来针对不同的系统版本,设置方式有所不同
/etc/init.d/
目录下建立文件ossfs
cd /etc/init.d/touch
ossfs
查看文件是否创建成功,用ls
命令查看,创建成功后直接用vi
命令编辑
#! /bin/bash#
# ossfs Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.
ossfs your_bucket your_mountpoint -ourl=your_url -oallow_other
注意改为自己对应的内容
chmod a+x /etc/init.d/ossfs
chkconfig ossfs on
/etc/fstab
中加入下面的命令ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0
以上主要是挂载对象存储的过程。接下来我们要进行自动备份脚本的操作。可以重新登录SSH了,尽量根据自己需要将备份脚本放到root目录或者自己想要设置的目录内。
这里主要使用的是一键备份VPS的脚本backup.sh
backup.sh的主要特点有:
1、支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
2、支持指定目录或文件的备份;
3、支持加密备份文件(需安装 openssl 命令,可选);
4、支持上传至 Google Drive(需先安装 gdrive 并配置,可选);
5、支持在删除指定天数本地旧的备份文件的同时,也删除 Google Drive 上的同名文件(可选)。
下载该脚本并赋予执行权限:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh备用:https://raw.githubusercontent.com/freehao123/across/master/backup.sh
chmod +x backup.sh
备份脚本的内容配置
直接vi编辑backup.sh
文件,相关的变量名说明:
ENCRYPTFLG (加密FLG,true 为加密,false 为不加密,默认是加密)
BACKUPPASS (加密密码,重要,务必要修改)
LOCALDIR (备份目录,可自己指定)
TEMPDIR (备份目录的临时目录,可自己指定)
LOGFILE (脚本运行产生的日志文件路径)
MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用户密码)
MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库)
BACKUP (需要备份的指定目录或文件列表,留空就是不备份目录或文件)LOCALAGEDAILIES (指定多少天之后删除本地旧的备份文件,默认为 7 天)
DELETE_REMOTE_FILE_FLG (删除 Google Drive 或 FTP 上的备份文件 FLG,true 为删除,false 为不删除)FTP_FLG (上传文件至 FTP 的 FLG,true 为上传,false 为不上传)
FTP_HOST (连接的 FTP 域名或 IP 地址)
FTP_USER (连接的 FTP 的用户名)
FTP_PASS (连接的 FTP 的用户的密码)
FTP_DIR (连接的 FTP 的远程目录,比如: public_html)
※ MYSQL_DATABASE_NAME 是一个数组变量,可以指定多个。举例如下:
MYSQL_DATABASE_NAME[0]=”phpmyadmin”
MYSQL_DATABASE_NAME[1]=”test”
※ BACKUP 是一个数组变量,可以指定多个。举例如下:
BACKUP[0]=”/data/www/default/test.tgz”
BACKUP[1]=”/data/www/default/test/”
BACKUP[2]=”/data/www/default/test2/”
如果只是备份数据库的话,可以参考如下的一些编写,就填这几个就行了。
执行以下命令开始备份:
./backup.sh
我们可以在我们设置的路径下看到已经备份的文件和数据库。
如何设置每日自动备份呢?
接下来使用crontab -e命令进入定时任务。
输入命令
30 3 * * * /root/backup.sh
代表每天凌晨3点30分自动执行脚本一次,即自动备份一次。
然后保存即可。
Demand feedback