步骤 1: 安装 rsync

如果尚未安装 rsync,Ubuntu可以通过以下命令安装:

sudo apt update
sudo apt install rsync

CentOS :

sudo yum install rsync

步骤 2: 编写备份脚本

下面的脚本在本地服务器上执行,将本地服务器的文件备份到远程服务器上

#!/bin/bash

# 本地服务器源目录(会将该目录的文件备份到远程服务器)
source_dir="/data/application"

# 远程服务器地址和目录
remote_user="root"
remote_host="192.168.127.18"
#将文件备份到远程服务器下的哪个目录
remote_backup_dir="/data/backup"

# 获取当前日期和时间,格式化为 YYYY-MM-DD-HH-MM-SS
timestamp=$(date +"%Y-%m-%d-%H:%M:%S")

# 日志文件路径和名称,根据当前时间命名,每执行一次脚本会生成一个日志文件
log_file="/data/backup/backup_logs/backup_${timestamp}.log"

# 执行增量备份
rsync -avz --log-file="$log_file" --backup --backup-dir="$remote_backup_dir" "$source_dir" "$remote_user@$remote_host:$remote_backup_dir"

解释一下这个脚本:

  • source_dir: 要备份的源目录,在本地服务器上
  • remote_backup_dir: 你想要存储备份的目录。
  • rsync -a - --backup --backup-dir=...: 这是 rsync 命令的一般形式:
  • -a: 以递归模式进行备份,保留文件属性。
  • --backup --backup-dir=...: 将源目录中被修改或新增的文件备份到远程服务器

用windows改为,可能会出现:
-bash: ./backup.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
用vim/vi打开,执行如下命令:

:set ff=unix
:wq

步骤3:通过ssh公钥连接远程服务器

通过下面的命令,查看是否有公钥和私钥

ls -l /root/.ssh/id_rsa
ls -l /root/.ssh/id_rsa.pub

下面生成公钥和私钥

ssh-keygen -t rsa -f /root/.ssh/id_rsa

将生成的公钥 ~/.ssh/id_rsa.pub 添加到远程服务器的 ~/.ssh/authorized_keys 文件中:

#remote_user和remote_server替换成远程服务器的用户和密码
ssh-copy-id remote_user@remote_server

步骤 4: 运行备份脚本

确保将脚本设置为可执行,并运行它:

chmod +x backup.sh
./backup.sh

步骤5 通过 Cron 定时备份

1.打开终端并输入以下命令来编辑当前用户的 cron 任务表:

crontab -e

2.如果是首次编辑 cron 任务表,会提示选择编辑器(例如 nano 或 vim),选择一个你喜欢的编辑器进行编辑。
3.在编辑器中添加定时任务,可参考下面的编写:

#每天凌晨1点执行 backup.sh
0 1 * * * /path/to/backup.sh
#每分钟执行一次
* * * * * /path/to/backup.sh
#每两小时执行一次
0 */2 * * * /path/to/backup.sh

4.修改后保存并关闭编辑器。
确保 /path/to/backup.sh 是可执行的脚本文件。如果没有权限,请先使用 chmod +x /path/to/backup.sh 添加执行权限。
5.手动开启并开机启动定时任务:

sudo systemctl enable cron
sudo systemctl start cron

liumang
343 声望36 粉丝

一直在思考怎么结合自己擅长的知识做些什么。现在有了好主意坚持一年,看看会有什么改变,有什么美好的事情发生。