我想将一堆文件复制到远程计算机上的 NTFS 分区,同时保留文件日期。在 NTFS 文件系统上,在本地副本上保留元数据已经很棘手了:
$ cp -p testfile /windows/c/
cp: die Zeiten für '/windows/c/testfile' werden beibehalten: Vorgang nicht zulässig
(翻译:“保留时间是不可接受的”)
它仅当以 root 身份复制时才有效:
$ sudo cp -p testfile /windows/c/
这已经很奇怪了,但到目前为止我还不知道更好的解决方案。
但是如何复制到远程机器?我想这样做:
$ scp -p testdir root@remote:/windows/c/
但远程机器只有“sudo”,没有“root”的密码访问权限。我想保留它。我可以这样做:
$ tar testdir | ssh remote sudo tar x --directory=/windows/c
但我无法通过这种方式输入“sudo”密码。我也试过
remote$ mkfifo /tmp/channel.tar
remote$ sudo tar xf /tmp/channel.tar --directory=/windows/c
$ mkdir /tmp/remote-tmp
$ sshfs remote:/tmp /tmp/remote-tmp
$ tar cf /tmp/remote-tmp/channel.tar testdir
但远程机器上什么也没发生。也许 sshfs 不支持 FIFO?我不知道了。
答案1
管道技巧似乎可以在本地远程机器上工作。SSHFS 似乎是阻止者。我找到了一种不使用 SSHFS 的工作方式:
remote$ mkfifo /tmp/channel.tar
remote$ sudo tar xf /tmp/channel.tar --directory=/windows/c
$ tar c testdir | ssh remote dd of=/tmp/channel.tar
答案2
使用 tar 作为容器来保存文件信息是一个好主意。
如果密码不是选项,您可以随时向远程计算机上的 root 帐户添加 ssh 密钥,并进行基于证书的身份验证。