如何使用rsync将Linux服务器(AWS实例)同步到本地,排除系统文件并备份需sudo的用户文件
使用rsync备份AWS云服务器用户文件(含root权限文件)并排除系统文件
核心思路
通过rsync结合远程sudo权限读取root用户文件,同时通过排除规则过滤所有系统目录/文件,仅保留用户相关数据。
1. 配置远程免密sudo(可选但推荐)
为避免每次备份输入sudo密码,编辑远程服务器的sudoers文件:
sudo visudo
添加以下内容(替换your_remote_user为你在AWS服务器的登录用户名):
your_remote_user ALL=(ALL) NOPASSWD: /usr/bin/rsync
保存退出后,测试远程sudo执行rsync是否无需密码:
ssh your_remote_user@aws-server-ip "sudo rsync --version"
2. 直接执行备份命令
方式1:命令行直接指定排除项
rsync -avz --delete \ --exclude={"/bin","/boot","/dev","/etc","/lib","/lib64","/proc","/sys","/sbin","/tmp","/var/log","/var/cache"} \ --rsync-path="sudo rsync" \ your_remote_user@aws-server-ip:/ \ /local/backup/directory/
参数说明:
-a:归档模式,保留文件权限、时间戳、软链接等属性-v:显示同步过程的详细日志-z:传输时压缩数据,减少带宽占用--delete:删除本地备份目录中远程已不存在的文件(按需启用)--exclude:批量排除系统核心目录,避免同步系统文件--rsync-path="sudo rsync":强制远程端以sudo权限运行rsync,获取root文件的读取权限your_remote_user@aws-server-ip:/:远程服务器的根目录(会自动排除指定系统目录)/local/backup/directory/:本地存储备份的目标目录(需提前创建)
方式2:使用排除文件管理规则
如果需要排除的目录较多,创建一个排除规则文件exclude-system-files.txt:
/bin /boot /dev /etc /lib /lib64 /proc /sys /sbin /tmp /var/log /var/cache /run
然后执行备份命令:
rsync -avz --delete \ --exclude-from='/path/to/exclude-system-files.txt' \ --rsync-path="sudo rsync" \ your_remote_user@aws-server-ip:/ \ /local/backup/directory/
3. 验证备份有效性
备份完成后,检查本地目录:
# 查看root用户文件是否同步成功 ls -l /local/backup/directory/root/ # 确认系统目录未被同步 ls /local/backup/directory/ | grep -E "(bin|boot|dev)"
内容的提问来源于stack exchange,提问作者Jahan Zinedine
相关产品推荐
相关产品推荐

