步骤 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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。