如何使用 rsync 或类似工具通过网络备份多用户 Linux 文件服务器

如何使用 rsync 或类似工具通过网络备份多用户 Linux 文件服务器

这是我在这里的第一篇帖子。

我正在尝试将所有数据文件从一台服务器备份到另一台服务器。数据可以由多个用户或保留的未登录用户拥有。

我正在尝试创建所有用户文件的远程镜像。准备稍后恢复。

我在这里搜索过并且进行过大量谷歌搜索,但所有的解决方案都涉及更改文件的所有权或其他操作。

我有 samba 和 nfs(导出)共享。

该系统由 2 个 Raspberry PI 组成,每个 PI 都配有多个多托架 USB 驱动器,因此基于 raspbian/debian。

我目前最好的解决方案是:

cat /etc/scripts/backup_data4.sh

if [ -e /mnt/data4_B/B4 ]; then
    printf "There is a B4 marker\n"
    sudo rsync -avz -e ssh /mnt/data4/git /mnt/data4_B/
    sudo rsync -avz -e ssh /mnt/data4/stacking2 /mnt/data4_B/

else
    printf "B4 does not exist\n"
fi

其中 /mnt/data4_B 是备份服务器上安装的导出驱动器。

/etc/exports

/mnt/data1/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data2/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data3/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data4/      192.168.0.160(rw,sync,no_subtree_check)


/mnt/data5/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data6/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data7/      192.168.0.160(rw,sync,no_subtree_check)
/mnt/data8/      192.168.0.160(rw,sync,no_subtree_check)

该脚本确实在某种程度上起作用,但我在备份服务器的所有权和权限方面遇到很多问题。

欢迎提出任何建议。谢谢。

额外添加。

两个系统上的用户名、UID 和 GID 相同。

我找不到任何方法来使用:

 rsync -av fromdir user@server:todir

可以处理多个用户文件。

答案1

如果 data4_B 是已挂载的 NFS 共享,则 root 可以复制所有内容并保留所有权和属性,只有 root 可以为其他用户执行此操作:
sudo cp -a /mnt/data4/git /mnt/data4_B/

rsync 也可以仅使用 ssh 而不挂载共享来执行此操作,但您首先需要确保 root 可以通过 ssh 登录远程计算机。因此,首先ssh-copy-id从一个 root 帐户执行到另一个。然后,rsync -av fromdir user@server:todir如果用户可以登录,您的操作将正常工作。

您所写的用法-e如下:
sudo rsync -e "ssh -p 22 -l root" -av /mnt/data4/git "host.example.com:/mnt/data4_B"

答案2

您可能遗漏的主要内容是-A--acls包含文件 ACL,rsync 默认排除这些 ACL。我使用下面的标志来备份权限。

# copy data over, ignoring mount points, sparse files, etc:
# -A should include --acls (check it though)
# [optional] -S sparse, -H hard-links, -x don't follow mounts, -v verbose
# -a (archive) includes -r/l/p/t/g/o/D 

rsync -SHAxa /mnt/some/folder/ /mnt/backups/

-e ssh此外,当/mnt/data4/git/mnt/data4_B/都是“本地”路径时,您不需要使用

答案3

感谢大家的建议,它们帮助我找到了解决方案。

问题是只有文件所有者可以设置/更改 nfs 文件或目录的所有权。

我仍然不明白为什么 root 不能更改已挂载的远程驱动器的所有权。

我还遇到了 Samba 配置错误,导致许多文件有错误的用户。我从配置文件中删除了所有管理员用户的使用。

我的最终解决方案是在备份服务器上运行备份脚本,从主服务器提取文件。

sudo rsync -avx /mnt/data4_A/git /mnt/data4/

其中 data4_A 是服务器 A 上的远程 nfs 驱动器,data4 是备份服务器 B 中的本地磁盘。

感谢您的所有帮助。

相关内容