scp 可以递归复制目录吗?

ker*_*nel 705 linux scp

目前我只能复制一个.tar文件。但是如何使用 递归复制目录scp

dmo*_*ati 1129

是的,使用-r

scp -rp sourcedirectory user@dest:/path
Run Code Online (Sandbox Code Playgroud)
  • -r 表示递归
  • -p 保留原始文件的修改时间、访问时间和模式。

注意:这会创建sourcedirectory内部,/path因此文件将在/path/sourcedirectory

  • 请注意,`-pr`(倒序选项)不会复制文件夹,而是将它们的内容复制到目标目录(显然,选项的顺序很重要)。 (23认同)
  • 但是请记住,这不会保留符号链接。 (10认同)

Phi*_*ack 197

虽然以前的答案在技术上是正确的,但您也应该考虑使用它rsyncrsync将发送端和接收端的数据与 diff 机制进行比较,因此不必重新发送先前已发送的数据。

如果您要多次将某些内容复制到远程计算机,请使用rsync. 实际上,rsync每次使用都很好,因为它对复制文件权限和所有权以及排除某些文件或目录等内容有更多控制。一般来说:

$ rsync -av /local/dir/ server:/remote/dir/
Run Code Online (Sandbox Code Playgroud)

将本地目录与远程目录同步。如果您第二次运行它并且本地目录的内容没有改变,则不会传输任何数据 - 比scp每次运行和复制所有内容效率更高。

此外rsync,与scp.

最后,rsync默认情况下,现代版本的ssh 运行,所以如果scp已经工作,rsync应该是一个简单的替代品。

  • `-av` :v 表示详细,a 表示存档,是 -rlptgoD 的快捷方式,这意味着递归,保留权利所有者的日期和链接。如果你只想递归使用`-r` (3认同)

小智 35

这就是该-r选项的用途。:)

如果需要,请参阅scp 手册页以获取更多信息。


Tar*_*run 18

递归复制选项“-r”(小写)

scp -r
Run Code Online (Sandbox Code Playgroud)

我将其与常规本地递归复制选项“-R”(大写)混淆

cp -R
Run Code Online (Sandbox Code Playgroud)

  • 我只是想指出 cp 和 scp 之间的区别,因为 -r 和 -R 不一样。http://unix.stackexchange.com/questions/18712/difference-between-cp-r-and-cp-r-copy-command (3认同)

mic*_*ick 11

最好的方法是通过 SSH 使用 rsync

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/
Run Code Online (Sandbox Code Playgroud)

我最喜欢的选项是 -Pazvessh --delete :

  • -a : 存档模式(包括很多默认的常用选项,包括保留符号链接)
  • -z : 压缩
  • -v : 详细 : 显示文件
  • -P : 将进度显示为文件完成/剩余文件
  • -e ssh : 在 ssh 协议中进行 rsync
  • --delete : 删除目标中不再存在于源中的文件


use*_*932 6

在寻找递归复制标志并通过这篇文章成功使用它之后,我只想发布一个建议。

如果情况是您正在复制(递归)目录。也许如果文件被压缩发送,您可以节省传输时间

我最后做的是:

local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助