当我用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。

其他回答

我认为最好从您的本地计算机复制文件,因为如果文件数量或文件大小非常大,如果您当前的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。

Rsync手册

如果您有SSH访问权限,则不需要先SSH再复制,只需从目标使用安全复制(SCP)即可。

scp user@host:/path/file /localpath/file

支持通配符,所以

scp user@host:/path/folder/* /localpath/folder

将复制该文件夹中的所有远程文件。如果复制多个目录。

注意-r也会复制所有子文件夹和内容。

从您的本地机器:

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。