You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多用户Linux文件服务器跨网络备份(rsync工具)权限问题求助

多用户Linux文件服务器跨网络备份(rsync工具)权限问题求助

您好!看了您的备份需求和目前遇到的权限问题,结合您两台树莓派(Raspbian/Debian)的环境,给您几个针对性的解决思路:

先分析您当前方案的核心问题

您现在用NFS挂载备份服务器的目录,然后用sudo rsync本地同步,但默认NFS会把root用户的请求映射成nobody用户(因为您的/etc/exports里没加no_root_squash参数),这就导致您同步的文件所有权会被改成nobody,自然出现权限和所有权异常——哪怕两台机器的UID/GID、用户名完全一致也没用。

方案一:修复NFS挂载的权限映射

修改备份服务器上的/etc/exports配置,给每个共享目录加上no_root_squash参数,这样源服务器的root用户操作NFS挂载目录时,不会被降级为nobody,能正确保留文件的原始所有权和权限:

/mnt/data1/      192.168.0.160(rw,sync,no_subtree_check,no_root_squash)
/mnt/data2/      192.168.0.160(rw,sync,no_subtree_check,no_root_squash)
# 其他data3-data8的配置同理修改

修改完成后重启NFS服务:

sudo systemctl restart nfs-kernel-server

之后重新挂载NFS目录,再运行您的备份脚本,同步后的文件应该就能保留原始的用户权限了。

方案二:改用rsync远程SSH模式(更推荐)

其实您不用挂载NFS,直接用rsync的远程SSH同步模式,用root用户操作就能完美解决多用户文件的权限问题——root可以访问所有用户(包括nologin用户)的文件,且远程同步时能完整保留文件的所有权、权限、时间戳等属性。

步骤如下:

  1. 先在源服务器上配置root用户免密登录备份服务器:
# 生成root的SSH密钥(一路回车默认即可)
sudo ssh-keygen -t ed25519
# 把密钥拷贝到备份服务器的root用户下
sudo ssh-copy-id root@备份服务器IP
  1. 修改您的备份脚本,替换成远程rsync命令:
#!/bin/bash
# 这里换成备份服务器的IP
BACKUP_SERVER="192.168.0.XXX"
if [ -e /mnt/data4_B/B4 ]; then
    printf "There is a B4 marker\n"
    # 用root远程同步,--numeric-ids确保UID/GID直接匹配(避免用户名映射问题)
    sudo rsync -avz --numeric-ids /mnt/data4/git root@${BACKUP_SERVER}:/mnt/data4_B/
    sudo rsync -avz --numeric-ids /mnt/data4/stacking2 root@${BACKUP_SERVER}:/mnt/data4_B/
else
    printf "B4 does not exist\n"
fi

这种方式不需要依赖NFS,减少了挂载环节的问题,而且rsync的远程模式本身就对跨服务器同步做了优化,效率也有保障。

验证同步结果

同步完成后,您可以用ls -n命令查看备份服务器上的文件(ls -n会显示数字UID/GID,比用户名更准确),确认和源服务器的UID/GID完全一致,就说明权限和所有权同步正确了。

备注:内容来源于stack exchange,提问作者nobody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:33:17