rsync -avz --delete -e ssh /本地/目录/ 用户名@远程服务器IP:/远程/目录/
-a
: 归档模式,保留文件属性-v
: 详细输出-z
: 压缩传输--delete
: 删除目标目录中源目录不存在的文件-e ssh
: 使用SSH加密传输tar czvf - /要备份的目录 | ssh 用户名@远程服务器IP "cat > /备份路径/backup_$(date +%Y%m%d).tar.gz"
dd if=/dev/sda bs=4M | gzip -c | ssh 用户名@远程服务器IP "dd of=/备份路径/sda_backup.img.gz"
#!/bin/bash
# backup_script.sh
BACKUP_DIR="/要备份的目录"
REMOTE_USER="用户名"
REMOTE_IP="远程服务器IP"
REMOTE_PATH="/远程备份路径"
LOG_FILE="/var/log/backup.log"
echo "[$(date)] 开始备份" >> $LOG_FILE
rsync -avz --delete -e ssh $BACKUP_DIR $REMOTE_USER@$REMOTE_IP:$REMOTE_PATH >> $LOG_FILE 2>&1
echo "[$(date)] 备份完成" >> $LOG_FILE
crontab -e
添加以下内容(每天凌晨2点执行备份):
0 2 * * * /path/to/backup_script.sh
rsync -avz --delete -e ssh 用户名@远程服务器IP:/远程/备份目录/ /本地/恢复目录/
ssh 用户名@远程服务器IP "cat /备份路径/backup.tar.gz" | tar xzvf - -C /本地/恢复目录
ssh 用户名@远程服务器IP "cat /备份路径/sda_backup.img.gz" | gunzip -c | dd of=/dev/sda bs=4M
使用SSH密钥认证而非密码
ssh-keygen -t rsa
ssh-copy-id 用户名@远程服务器IP
限制备份用户的权限
# 在远程服务器上创建专用备份用户
sudo useradd -m backupuser
sudo passwd backupuser
sudo chown -R backupuser:backupuser /远程备份目录
加密敏感备份数据
tar czvf - /敏感数据 | openssl enc -aes-256-cbc -salt -out backup_encrypted.tar.gz.enc
Duplicity - 支持加密的增量备份工具
duplicity /本地目录 sftp://用户名@远程服务器IP//远程目录
BorgBackup - 高效的去重备份工具
borg init --encryption=repokey 用户名@远程服务器IP:/远程目录
borg create 用户名@远程服务器IP:/远程目录::备份名称-{now} /要备份的目录
Rclone - 支持多种云存储的备份工具
rclone sync /本地目录 remote:备份目录
检查文件列表
ssh 用户名@远程服务器IP "ls -lh /备份目录"
验证tar备份内容
ssh 用户名@远程服务器IP "tar tzvf /备份目录/backup.tar.gz | head"
使用校验和验证
# 本地生成校验和
find /要备份的目录 -type f -exec md5sum {} \; > local_checksums.md5
# 远程生成校验和
ssh 用户名@远程服务器IP "find /备份目录 -type f -exec md5sum {} \;" > remote_checksums.md5
# 比较校验和
diff local_checksums.md5 remote_checksums.md5
通过以上方法,您可以建立可靠的Linux系统远程备份与恢复机制,确保数据安全。