多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
定时备份网站数据到 Git [TOC] # 服务器安装配置 Git ```bash # 安装 git sudo yum install git # 配置 git git config --global user.name "Ryanjie" git config --global user.email "ryanjiena@foxmail.com" # 配置 SSH keys cat ~/.ssh/id_rsa.pub ## 如果你看到一长串以 ssh-rsa 或 ssh-dsa 开头的字符串, 你可以跳过 ssh-keygen 的步骤。 ## 提示: 最好的情况是一个密码对应一个 ssh key。 ## 完全可以跳过创建密码这个步骤。记住设置的密码并不能被修改或获取。 ## 或者按如下命令来生成 ssh key: ssh-keygen -t rsa -C "ryanjiena@foxmail.com" ## 这里会要求你提供一个位置和文件名去存放键值对和密码 (建议点击 Enter 键去使用默认值), # 获取生成的公钥 cat ~/.ssh/id_rsa.pub # 复制公钥到剪切板 ## GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub ## Windows clip < ~/.ssh/id_rsa.pub ## Mac pbcopy < ~/.ssh/id_rsa.pub ## 添加公钥到远程仓库 ## https://code.aliyun.com/profile/keys ``` ![](https://pic.ryanjie.xyz/blog/000003/%E5%AE%9A%E6%97%B6%E5%A4%87%E4%BB%BD%E7%BD%91%E7%AB%99%E6%95%B0%E6%8D%AE%E5%88%B0%20Git-1.jpg) # 建立远程私人仓库 访问 https://code.aliyun.com/projects/new 建立远程私人仓库。 * 项目路径随便写 * 可见等级选择 `Private` * 最后点击 `创建项目` 即可。 # 服务器创建本地仓库 ```bash # 克隆远程仓库到本地 git clone git@code.aliyun.com:Ryanjie/www.ryanjie.cn.git cd www.ryanjie.cn touch README.md git add README.md git commit -m "add README" git push -u origin master # 同步本地仓库到远程 cd www.ryanjie.cn git init git remote add origin git@code.aliyun.com:Ryanjie/www.ryanjie.cn.git git add . git commit -m "update" git push -u origin master ``` # 定时备份脚本 ```bash vim /home/gitbackup.sh # 创建定时备份脚本 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH endDate=`date +"%Y-%m-%d %H:%M:%S"` cd /home/www.ryanjie.cn/SchoolLifeData mysqldump -uroot -p2197030521...Zxj shop > SchoolLifeDatabase_$(endDate).sql git add -A git commit -m "[$endDate]" git push -u origin master echo "----------------------------------------------------------------------------" echo "★[$endDate] Successful" echo "----------------------------------------------------------------------------" # 添加可执行权限 sudo chmod +x /home/gitbackup.sh ``` 或者将下面脚本保存为 `install-gitbackup.sh` 文件,上传到服务器添加可执行权限执行即可。 ```bash #!/bin/sh set -exo pipefail gitbackup_file='/home/gitbackup.sh' if [ -f ${gitbackup_file} ]; then mv ${gitbackup_file} ${gitbackup_file}.bak fi cat >${gitbackup_file} <<'EOF' ## 进入到网站根目录,记得修改为自己的站点 cd /home/www.ryanjie.cn/typecho ## 将数据库导入到该目录,这里以 mysql 为例,passwd 为数据库密码, ## typecho 为数据库名称,typecho.sql 为备份的数据库文件 mysqldump -uroot -ppasswd typecho > typecho_$(date +%Y%m%d).sql git add . git commit -m "backupsite" git push -u origin master EOF ``` <a id="markdown-0x05-添加定时备份任务" name="0x05-添加定时备份任务"></a> # 添加定时备份任务 ``` bash # 创建 cron 脚本 ## 每天早上 02:22 进行备份 echo "22 02 * * * bash /home/gitbackup.sh" > gitbackup.cron ## 每两分钟 进行备份并且保存运行日志 (把标准错误输出重定向到标准输出) echo "*/2 * * * * bash /home/www.ryanjie.cn/SchoolLifeData/sitegitbackup/gitbackup.sh >> /home/www.ryanjie.cn/SchoolLifeData/log/$(date +"\%Y-\%m-\%d \%H:\%M:\%S").log 2>&1 &" > gitbackup.cron # 添加定时备份任务 crontab gitbackup.cron # 检查定时任务是否添加成功 crontab -l ## 或者检测 /var/spool/cron 下是否生成对应 cron 脚本 ```