我想知道将目录结构从一台服务器(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
,但随后机器确实必须连接。如果您无法直接传输,我会选择使用tar
with ,它可以保留用户、权限和符号链接。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
。如果没有超级用户,就无法更改所有权。