原创文章,转载请注明出处
https://qiedd.com/

0. 简介

WordPress备份分为两个部分,备份数据库和网站目录备份

远程同步我们使用 rsync 进行备份

1. 安装 工具

Rsync

博客机和远程服务器都需要安装 Rsync

# Arch
pacman -S rsync

# Debian/Ubuntu
apt install rsync -y

# CentOS/Fedora
yum install rsync -y

# 可能需要安装epel-release
yum install epel-release -y

cron

使用 crontab 来进行定时任务

# Arch
pacman -S cron

# Debian/Ubuntu
apt install cron -y

# CentOS/Fedora
yum install cron -y

pigz

pigz 是一个支持多线程 gz 压缩工具

# Arch
pacman -S pigz

# Debian/Ubuntu
apt install pigz -y

# CentOS/Fedora
yum install pigz -y

2. 进行博客备份

我们将备份博客根目录和数据库备份的命令写在同一个脚本中

# 创建脚本并生成
vim back.sh

*** 脚本内容 ***
#!/bin/bash
tar --use-compress-program=pigz -cvf /root/backup.tar.gz /www/wordpress/
mysqldump -uroot -p密码 要备份的数据库名 > /root/backup.sql

# 给脚本运行权限
chmod +x backup.sh

# Arch的默认crontab编辑器为vi,我们需要修改成vim
vim /etc/environment

*** 最下面添加 ***
EDITOR=vim
# 添加到crontab
crontab -e

# 每天6点运行备份
0 6 * * * /root/backup.sh

# 启动cron服务
systemctl enable cronie
systemctl start cronie

3. 免登录传输

使用公钥免登录传输

# 生成私钥,一路回车即可
ssh-keygen -t rsa

# 进入目录
cd .ssh

# 保存私钥
cp id_rsa.pub authorized_keys

# 更改权限防止登录失败
chmod 700 authorized_keys

# 如果需要,可以禁用密码登陆
vim /etc/ssh/sshd_config

*** 更改下列选项 ***
# no为不使用密码
PasswordAuthentication no

# 禁止root使用密码登陆
PermitRootLogin prohibit-password

然后将 .ssh/id_rsa 这个文件传输到远程机器上

# 可以使用sftp来传输
sftp root@远程机器IP

# 如果你使用了其他端口作为SSH端口,并开启了密钥验证
sftp -P 端口 -i 公钥路径 root@远程机器IP

# 将公钥传输过去
put /root/.ssh/id_rsa 

4. 远程备份

在这台机子上也装好 rsync

# 创建一个脚本
vim rsync.sh

# 脚本内容,会一直自动覆盖之前的备份
rsync -Prvz -e "ssh -i 刚刚传过来的公钥存放路径 -p 端口" root@博客IP:博客那边存放备份的路径 本地存放的路径

# 然后设置crontab
crontab -e

# 设置定时rsync,每天8点
0 8 * * * /root/rsync.sh


0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据