如何让scp复制隐藏文件?

ras*_*her 71 files scp

我经常使用 SCP 来复制文件 - 特别是与网络相关的文件。问题是,每当我这样做时,我都无法获得复制隐藏文件(例如,.htaccess)的命令。

我通常调用这个:

scp -rp src/ user@server:dest/
Run Code Online (Sandbox Code Playgroud)

这不会复制隐藏文件。我不希望有再次调用这个(做类似的东西scp -rp src/.* ...-并且具有奇怪...意义呢。

我在scp手册页中没有看到任何关于“包含隐藏文件”的内容。

我怎样才能做到这一点?

Mat*_*ons 74

那应该绝对匹配隐藏文件。源代码末尾的 / 表示“此目录下的每个文件”。尽管如此,测试和研究让您大吃一惊。这是愚蠢的行为。

答案”是在源的末尾附加一个点:

scp -rp src/. user@server:dest/

真正的答案是使用rsync。

  • rsync -avz -e ssh --progress src/ user@server:dest/ (23认同)
  • 请注意,由于安全问题,在末尾添加 `.` 不再有效(2019 年)。这在这里解释:https://superuser.com/questions/1403473/scp-error-unexpected-filename (9认同)
  • `scp:错误:意外的文件名:。` (3认同)
  • 我无法重现这种行为。`scp -r source/host:source2` 复制点文件。从 2007 年开始在 OpenSSH 5.1 中工作。 (2认同)

cst*_*mas 28

你可以试试 rsync。它更适合这份工作:

rsync -av src/ user@server:dest/

(它的手册页值得一读。)

  • 我 _always_ 使用 --progress 选项进行 rsync,没有它我活不下去 =D (2认同)

kby*_*yrd 9

不要在源目录后面放斜线。您的代码如下所示:

scp -rp src user@server:dest/
Run Code Online (Sandbox Code Playgroud)

这将在远程机器上的“dest”下创建一个目录“src”,其中包含所有隐藏文件。它可能不是你想要的,但它会复制 src 中的隐藏文件。


小智 7

要仅复制隐藏文件,请使用此命令

scp -rp /path_to_copy_hidden/.[!.]* user@host:/path_to_paste/
Run Code Online (Sandbox Code Playgroud)

实际游戏是/.[!.]*指以.(hidden)开头的文件的标签