当我用ssh连接到远程服务器后,将所有文件从一个目录复制到我机器上的本地目录的命令是什么?
从您的本地机器:
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 < / >强。
man rsync
如果您有SSH访问权限,则不需要先SSH再复制,只需从目的地使用安全副本(SCP)即可。
scp user@host:/path/file /localpath/file
支持通配符,所以
scp user@host:/path/folder/* /localpath/folder
将复制该文件夹中的所有远程文件。如果复制多个目录。
注意-r也会复制所有子文件夹和内容。
我认为最好从您的本地计算机复制文件,因为如果文件数量或文件大小非常大,如果您当前的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。
v
--verbose
a
--archive
P
--partial
e
--rsh=COMMAND
rsync man page . rsync手册
rsync的TLDR:
传输文件到或从远程主机(不是在两个远程主机之间)。 可以传输单个文件,也可以传输匹配模式的多个文件。 更多信息:https://manned.org/rsync.
rsync path/to/local_file remote_host:path/to/remote_directory
rsync remote_host:path/to/remote_file path/to/local_directory
rsync -azvhP path/to/local_file remote_host:path/to/remote_directory
rsync -r remote_host:path/to/remote_directory path/to/local_directory
rsync -r remote_host:path/to/remote_directory/ path/to/local_directory
rsync -rauL remote_host:path/to/remote_directory path/to/local_directory
rsync -e ssh --delete remote_host:path/to/remote_file path/to/local_file
rsync -e 'ssh -p port' --info=progress2 remote_host:path/to/remote_file path/to/local_file
我使用我的机器的tldr来获取这个信息。