将大树从一台机器复制到另一台机器,保持所有权

将大树从一台机器复制到另一台机器,保持所有权

我正在尝试在计算机之间复制大型文件夹结构。我想在复制过程中保留所有权/权利,因为事后“修复”权限是不合理的。

因此,我使用以下命令来 tar 完整的 privs 文件并将数据传输到目标计算机。两台机器上存在相同的用户。

tar cfzp - foldertocopy | ssh me@machine "cat > /applications/incoming/foldertocopy.tar.gz"

传输工作正常,下一步是在远程计算机上使用 root 权限并解压文件。

问题是:没有足够的磁盘空间来同时存储压缩和未压缩的数据

我可以使用 rsync/recursive scp 但我的用户无权创建具有正确权限本身的文件,并且 root 无法远程登录。

我有什么选择?源计算机是 RHEL4,目标计算机是 RHEL5。

答案1

以 root 身份设置命名管道:

# mkfifo /tmp/fifo
# chmod o+w /tmp/fifo

然后,将您的数据传输为me

$ tar cfzp - foldertocopy | ssh me@machine "cat > /tmp/fifo"

但将其读作root

# tar -xfzp /tmp/fifo

答案2

解决该问题的一种方法是让 ssh 直接运行 untar:

tar cfzp - foldertocopy | ssh me@machine "cd rightplace; tar xzf -"

答案3

为什么不使用归档 rsync?

rsync -avzHAX foldertocopy user@remoteserver:/file/path/to/copy

这样您就可以保存有关文件的每个细节,还可以使用“z”rsync 动态压缩流。

相关内容