我想使用 ssh 从包含数千个文件的服务器下载一个文件夹。我使用的是 Ubuntu,并且没有该服务器的写入权限,因此我无法在服务器上创建 .tar 文件并随后复制它。但是单独下载所有文件非常慢。
那么,如何使用命令行将包含那么多文件的文件夹下载为一个存档?
答案1
你可以做这样的事情:
ssh username@hostname 'tar -cf - /dir/to/download' | gzip > remote_files.tgz
这将在远程服务器上运行 tar,但不是写入文件,而是输出到stdout
。这将通过 SSH 返回到您的本地计算机,进行 gzip 压缩,然后写入文件。
答案2
前面两个答案都可以,但我很惊讶没有人提到rsync
,例如:
rsync -az [email protected]:/path/to/remote/files/ /path/to/local/files/
额外的好处是,如果连接中断,您可以重新启动,它会找出剩下需要复制的内容。
答案3
安全副本“scp”已随 OpenSSH 一起安装。因此这应该可以解决问题...
scp -r [email protected]:/path/to/remote/files /path/to/local/files
-r 递归复制整个目录。
man scp
了解详细信息。