本地服务器如何增量备份远程主机文件

使用服务器备份到另一个目录,万一服务器没了,数据都完蛋。

于是想着,反正自己本地有一台当服务器用的笔记本,就用这台笔记本用定时任务增量备份服务器上的数据也不错。

这里使用到了 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
阅读剩余
THE END