一旦我 ssh'd 进入我的远程服务器,将所有文件从目录复制到我机器上的本地目录的命令是什么?
rsync
。
从您的本地机器:
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
从具有非标准 ssh 端口的本地计算机:
rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
或者从远程主机,假设您真的想以这种方式工作并且您的本地计算机正在侦听 SSH:
rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
有关我常用开关的说明,请参阅 man rsync
。
如果您有 SSH 访问权限,则不需要先 SSH 再复制,只需使用目标中的 Secure Copy (SCP)。
scp user@host:/path/file /localpath/file
支持通配符,所以
scp user@host:/path/folder/* /localpath/folder
将复制该文件夹中的所有远程文件。如果复制多个目录。
note -r 也会复制所有子文件夹和内容。
scp
而不是 rsync
?此外,请注意您的 shell 不会尝试扩展 user@host:/path/folder/*
,可能是通过使用单引号 ('
)。
我认为最好从本地计算机复制文件,因为如果文件数量或文件大小非常大,如果您当前的 ssh 会话丢失(管道损坏或其他),复制过程可能会中断。
如果您已配置 ssh 密钥以连接到远程服务器,则可以使用以下命令:
rsync -avP -e "ssh -i /home/local_user/ssh/key_to_access_remote_server.pem" remote_user@remote_host.ip:/home/remote_user/file.gz /home/local_user/Downloads/
其中 v
选项是 --verbose
,a
选项是 --archive
- 存档模式,P
选项与 --partial
相同 - 保留部分传输的文件,e
选项是 --rsh=COMMAND
- 指定远程 shell使用。
/path/to/local/storage
内创建一个名为 copy 的目录。像这样/path/to/local/storage/copy
。如果那是你想要的,那就太好了。然而,更常见的情况是您希望将远程目录的内容复制到本地目录中。然后您将执行/path/to/copy/
,这会将内容放在目录/path/to/local/storage
中,而无需创建本地副本目录。