您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何使用rsync备份数据
## 目录
1. [rsync简介](#rsync简介)
2. [安装与配置](#安装与配置)
3. [基础语法与参数](#基础语法与参数)
4. [本地备份实战](#本地备份实战)
5. [远程备份实战](#远程备份实战)
6. [高级备份策略](#高级备份策略)
7. [自动化与定时任务](#自动化与定时任务)
8. [常见问题排查](#常见问题排查)
9. [安全注意事项](#安全注意事项)
10. [替代方案对比](#替代方案对比)
## rsync简介
rsync(Remote Synchronization)是Linux/Unix系统下著名的增量备份工具,由Andrew Tridgell于1996年开发。它通过独特的"delta-transfer"算法,仅传输源文件和目标文件的差异部分,这使得它在处理大文件备份时效率极高。
### 核心特性
- **增量备份**:仅传输变化部分,节省带宽和时间
- **保留属性**:可保持文件权限、时间戳等元数据
- **支持加密**:可通过SSH进行安全传输
- **灵活过滤**:支持包含/排除特定文件模式
- **断点续传**:网络中断后可恢复传输
### 适用场景
- 服务器数据定期备份
- 网站内容同步
- 开发环境部署
- 跨设备文件同步
## 安装与配置
### Linux系统安装
```bash
# Debian/Ubuntu
sudo apt-get install rsync
# RHEL/CentOS
sudo yum install rsync
# Arch Linux
sudo pacman -S rsync
# 通过Homebrew安装
brew install rsync
rsync --version
rsync [选项] 源路径 目标路径
参数 | 说明 |
---|---|
-a |
归档模式(相当于-rlptgoD ) |
-v |
显示详细输出 |
-z |
传输时压缩数据 |
-h |
人类可读格式输出 |
-P |
显示进度并支持断点续传 |
--delete |
删除目标中源不存在的文件 |
--exclude |
排除指定模式的文件 |
--include |
包含指定模式的文件 |
-e |
指定远程shell程序 |
rsync -avzP /source/ /destination/
# 将/home/user/docs同步到/backup/docs
rsync -av /home/user/docs/ /backup/docs/
注意:源路径结尾的
/
表示同步目录内容,不加/
表示同步目录本身
rsync -av --exclude='*.tmp' --exclude='temp/' /source/ /backup/
exclude-list.txt
:*.log
cache/
temp/
rsync -av --exclude-from='exclude-list.txt' /source/ /backup/
# 使用校验和而非修改时间
rsync -avc /source/ /backup/
# 本地到远程
rsync -avzP -e ssh /local/path/ user@remote:/remote/path/
# 远程到本地
rsync -avzP -e ssh user@remote:/remote/path/ /local/path/
rsync -avzP -e 'ssh -p 2222' /local/ user@remote:/remote/
/etc/rsyncd.conf
):[backup]
path = /data/backup
comment = Backup Area
read only = no
list = yes
auth users = backupuser
secrets file = /etc/rsyncd.secrets
rsync -av /local/path/ backupuser@remote::backup/
# 限制带宽为500KB/s
rsync -avz --bwlimit=500 /source/ user@remote:/destination/
# 创建基于日期的备份目录
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 执行增量备份
rsync -av --link-dest=/backup/previous_backup/ /source/ $BACKUP_DIR
# 更新符号链接
ln -snf $BACKUP_DIR /backup/previous_backup
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d%H%M)
SNAPSHOT_DIR="/backup/snapshot_$TIMESTAMP"
rsync -av --delete --link-dest=/backup/latest /source/ $SNAPSHOT_DIR \
&& ln -snf $SNAPSHOT_DIR /backup/latest
# MySQL备份示例
mysqldump -u user -p dbname | gzip > /tmp/db_backup.sql.gz
rsync -avz /tmp/db_backup.sql.gz backup-server:/backup/database/
/usr/local/bin/backup.sh
:
#!/bin/bash
LOG_FILE="/var/log/backup_$(date +%Y%m%d).log"
SOURCE_DIR="/data/important"
BACKUP_DIR="/backup/daily"
REMOTE_HOST="backup@remote-server"
echo "Backup started at $(date)" >> $LOG_FILE
rsync -avz --delete \
--exclude='cache/' \
-e ssh $SOURCE_DIR $REMOTE_HOST:$BACKUP_DIR \
>> $LOG_FILE 2>&1
echo "Backup completed at $(date)" >> $LOG_FILE
# 每天凌晨2点执行备份
0 2 * * * /usr/local/bin/backup.sh
/etc/logrotate.d/backup
:
/var/log/backup_*.log {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
}
错误信息 | 可能原因 | 解决方案 |
---|---|---|
rsync: connection unexpectedly closed |
网络问题/权限不足 | 检查SSH连接/验证权限 |
rsync: failed to set times |
目标文件系统限制 | 添加--no-times 参数 |
rsync: write failed |
磁盘空间不足 | 清理目标磁盘空间 |
password file must be owned by root |
权限配置错误 | chmod 600 /etc/rsyncd.secrets |
网络优化:
rsync -avz --compress-level=3 --partial /source/ user@remote:/backup/
内存优化(大文件场景):
rsync -av --no-whole-file --block-size=32768 /source/ /backup/
并行传输:
rsync -av --progress --stats --human-readable --compress \
--recursive --partial --rsh="parallel-ssh -n 4" \
/source/ user@remote:/backup/
使用密钥认证替代密码
ssh-keygen -t ed25519
ssh-copy-id user@remote
禁用root远程登录
修改默认SSH端口
限制守护进程访问IP:
hosts allow = 192.168.1.0/24
使用chroot环境:
use chroot = yes
设置最小权限:
read only = yes
# 使用gpg加密备份
tar czf - /data | gpg -c | rsync -avz - user@remote:/backup/encrypted.tar.gz.gpg
特性 | rsync | scp |
---|---|---|
增量传输 | ✓ | × |
断点续传 | ✓ | × |
保留属性 | ✓ | × |
传输速度 | 快(差异传输) | 慢(完整传输) |
资源消耗 | 高(需计算差异) | 低 |
特性 | rsync | rclone |
---|---|---|
云存储支持 | × | ✓ |
加密传输 | 需配合SSH | 内置 |
多线程 | × | ✓ |
内存占用 | 低 | 高 |
rsync作为经过时间检验的备份工具,在可靠性、灵活性和效率方面表现卓越。通过本文介绍的各种技巧和策略,您可以根据实际需求构建从简单到复杂的不同备份方案。建议从基础备份开始,逐步增加自动化、校验和安全功能,最终形成完整的备份体系。
最佳实践提示:定期验证备份的完整性和可恢复性,这才是真正可靠的备份方案。
# 基础同步
rsync -av /src/ /dest/
# 远程同步(SSH)
rsync -avz -e ssh /local/ user@remote:/remote/
# 带进度和断点续传
rsync -avzP /src/ user@remote:/dest/
# 删除目标多余文件
rsync -av --delete /src/ /dest/
# 带宽限制
rsync -avz --bwlimit=1000 /src/ user@remote:/dest/
man rsync
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。