共计 912 个字符,预计需要花费 3 分钟才能阅读完成。
阿蛮君网站之前正愁如何备份服务器上的网站数据,仅仅使用服务器备份到另一个目录,万一服务器没了,数据都完蛋。
于是想着,反正自己本地有一台当服务器用的笔记本,就用这台笔记本用定时任务来增量备份服务器上的数据也不错。
这里使用到了 sshpass
命令,好处是可以不用使用公钥拷贝到远程服务器上,可以命令行输入密码,坏处显而易见就是没那么安全。
1. 安装sshpass
有可能机器上没安装命令,需要先进行安装。
apt install -y sshpass
2. 编写脚本
创建目录和脚本文件:
mkdir -p /usr/local/backup && \
touch /usr/local/backup/backup.sh && \
chmod +x /usr/local/backup/backup.sh
添加脚本文件内容 vim backup.sh
:
#!/bin/bash
shell_dir=$(cd $(dirname $0); pwd)
# 定义远程主机的用户名、IP地址和要备份的目录
remote_user="root"
remote_ip="1.1.1.1"
remote_dir="/home/xxx"
# 定义本地备份目录和要排除的文件/目录
local_dir="/usr/local/backup/xxx"
exclude_file=".git/"
# 定义日志文件
log_file="${shell_dir}/file.log"
# 定义SSH密码
ssh_pass="123456"
echo "备份开始执行于:$(date)" >> "$log_file"
# 使用sshpass命令进行SSH连接和增量备份
sshpass -p "$ssh_pass" rsync -avz --delete --exclude "$exclude_file" "$remote_user@$remote_ip:$remote_dir/" "$local_dir/" >> "$log_file" 2>&1
echo "备份执行完成于:$(date)" >> "$log_file"
3. 创建定时任务
比如我需要每天凌晨 2 点备份一次,只需要使用 crontab -e
命令,追加以下内容即可。
0 2 * * * /usr/local/backup/backup.sh
提醒:本文发布于584天前,文中所关联的信息可能已发生改变,请知悉!
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完