如何在没有root用户的情况下将目录结构从一台服务器复制到另一台服务器?

如何在没有root用户的情况下将目录结构从一台服务器复制到另一台服务器?

我想知道将目录结构从一台服务器(Unix)复制到另一台服务器(Linux)的最佳方法:

  • 没有 root 用户
  • 服务器未连接(例如不能在它们之间直接使用 SSH)
  • 我只需要复制文件夹和子文件夹,没有文件
  • 文件夹的权限也必须转移

所以我有 user@server1 和一些目录结构。我需要将此结构复制到没有文件的 user@server2 ,具有相同的权限。两台服务器上的用户具有相同的权限并且位于同一组中,服务器未连接。

编辑:我忘了提及 server1 是 Unix,而 server 2 是 Linux。因此,当我尝试在 Unix 服务器上执行 proycon 的代码时,我收到消息: tar: Not a recognized flag: z 当我尝试 Tom Hunt 的选项时,我收到消息: -printf 不是有效选项。另外,值得一提的是,用户具有不同的名称,尽管他们具有相同的权限并且位于同一组中。所以我有 user_xy@server1 和 user_zx@server2

答案1

理想情况下,您会执行类似rsync或 的操作scp,但随后机器确实必须连接。如果您无法直接传输,我会选择使用tarwith ,它可以保留用户、权限和符号链接。find

在一台主机上:

$ find yourdirectory/ -type d | tar -cvzf archive.tar.gz --no-recursion --files-from -

通过任何方式传输存档(ftp?U盘?烟雾信号?)

在目标主机上:

$ tar -xvzf archive.tar.gz

答案2

server1

find . -type d -printf '%p\n%m\n' >dir_list

dir_list按照您认为合适的方式将文件从 server1 传输到 server2。

server2

while read -r filename; do
    read -r perms
    mkdir -p "$filename"
    chmod "$perms" "$filename"
done <dir_list

这将创建您在 上运行的用户拥有的所有目录server2。如果没有超级用户,就无法更改所有权。

相关内容