scp 未按预期复制文件夹结构

scp 未按预期复制文件夹结构

我有一条路径是:

/one/two/three/four/five

我想要 scpfour/five/

递归到该位置的另一台机器:

/zero/

使其看起来像:

/zero/four/five

我当前的路径是/one/two/three当我这样做时:

scp -r four/five user@bla:/zero/

但在目标机器上它看起来像:

/zero/five/

代替:

/zero/four/five/

(如果 rsync 更简单,很高兴使用它)。

答案1

本地业务喜欢mv four/five /zero/cp -r four/five /zero/不喜欢创造/zero/four/,也几乎没有人期望他们创造。因此,你所谓的“不期望”对我来说是相当期望的。

tar存储提供的路径(参见这个问题)。利用这个事实。

cd /one/two/three \
&& tar -cf - four/five | ssh user@bla '
   cd /zero && tar -xf -
'

答案2

scpmv行为与此处相同cp。假设除您可以运行four之外还包含其他目录five

ssh user@bla 'mkdir -p /zero/four'
(cd four && scp -r five user@bla:/zero/four/)

只是复制five

  • mkdir -p如果目录已存在,则避免出现错误消息
  • (cd ... )在子 shell 中运行该行,因此您之后不需要cd退出four

相关内容