我正在尝试在计算机之间复制大型文件夹结构。我想在复制过程中保留所有权/权利,因为事后“修复”权限是不合理的。
因此,我使用以下命令来 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 动态压缩流。