从远程设备复制大量文件而不创建存档

Nat*_*iel 8 networking command-line scp

通常,如果我想从远程机器复制文件,我会这样做

scp user@remote.device:/folder/* .
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,有太多文件导致我出错

bash: /usr/bin/scp: Argument list too long
Run Code Online (Sandbox Code Playgroud)

现在,通过谷歌搜索这个问题,我可以找到几种方法来在远程机器上创建一个 tar 存档而不会触发这个错误。但是,在这种情况下,远程机器只有一个小型 SD 卡用于存储,因此没有空间来创建存档。

那么在这种情况下传输文件的正常方法是什么?我想它应该没有太大区别,但如果有的话,我的本地机器是 Mac,远程机器是 Raspberry Pi。

Spa*_*sle 7

您应该使用 的-r参数scp,因此:

scp -r user@remote.device:/folder/ ./
Run Code Online (Sandbox Code Playgroud)

请注意,因此,folder最终将成为./

  • 使用 -r 更快,因为远程子系统将文件发送到本地运行的 scp 应用程序(该进程由远程主机启动,您的本地主机在收到时简单地确认),而没有首先使用 -r scp 会构建一个文件列表,然后它会一个一个地向远程主机询问每个文件,从而造成相当大的网络延迟。 (2认同)