如何将目录结构复制到远程 Linux 服务器?

如何将目录结构复制到远程 Linux 服务器?

我想将一个复杂的目录结构从一台 Linux 服务器复制到另一台远程服务器,从某个子目录开始。

我不需要文件的内容,我只想保留结构、所有者和权限,因为要克隆的服务器包含大量数据,不能复制到新机器上。

我猜想这可以通过将文件夹结构打包并在远程机器上解包来实现。或者通过使用 rsync 进行复制而不发送数据。或者通过使用 find 创建 shell 脚本来实现。

如果有人手头有完成此任务的一行程序,我将不胜感激。

答案1

您可以组合findcpio从当前工作目录中创建子目录列表,如下所示:

find . -type d -print | cpio -oO dirs.cpio

要在远程计算机上重建目录层次结构,请将文件复制dirs.cpio到所需位置并运行:

cpio -iI dirs.cpio

答案2

一个解决方案可能是

find . -type d > dirs

找到目录,然后使用该文件-T的选项tar

tar cpzT dirs -f dest_file.tar.gz

它应该创建一个压缩档案 ( ),通过仅存档列出的文件 ( )z来保留权限 ( ) 。传输文件,使用以下命令解压pT dirs

tar xpzf dest_file.tar.gz

你就完成了。

答案3

使用rsync递归地将源路径下的目录复制到目标目录:

rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/apache/logs/ user@domain:/path/to/apache/logs/

使用选项--include--exclude代替--filter旧版本的规则rsync

rsync --archive --verbose --include="*/" --exclude="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --include="*/" --exclude="*" /path/to/apache/logs/ user@domain:/path/to/apache/logs/

相关内容