如何在sftp中获取整个目录?
我刚学会使用sftp,我想把一个目录从远程计算机复制到本地计算机上。如果我尝试了
get [directory]
Cannot download non-regular file: /home/mpirocch/Documents
get -R
也不行。
我刚学会使用sftp,我想把一个目录从远程计算机复制到本地计算机上。如果我尝试了
get [directory]
Cannot download non-regular file: /home/mpirocch/Documents
get -R
也不行。
使用-r
(递归)标志:
get -r *
用途:
scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
使用lftp
:
lftp sftp://user@host
(https://lftp.yar.ru/lftp-man.html) 然后在lftp中,将cd
导入你要复制的目录中,使用mirror
命令递归下载选中的目录,如:
mirror
这个命令接受选项和参数。 org ](https://manpages.debian.org/unstable/lftp/lftp.1.en.html) 了解其他命令和选项。
这个小指南应该有帮助,用 lftp 镜像远程服务器到本地文件夹
lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
- sftp://
= 使用 SFTP 协议
- mirror
= 镜像模式
- verbose
= 显示正在下载的文件
- use-pget-n
= 显示段数。真正有用的是加快大文件的速度
- parallel
= 同时下载倍数文件
如果你想并行下载文件,请用 use-pget-n=8
切换出 --parallel=8
希望这对需要将远程文件夹镜像到本地文件夹的人有帮助
如果你能找到更好的东西,不要直接使用 sftp 程序。对于 Linux,很多文件管理器(至少 Nautilus 和 Dolphin,GNOME 和 KDE 的文件管理器)都支持 sftp,而且还有 sshfs。对于windows,有WinSCP,可能还有其他。所有这些都是为了让你通过 sftp 访问文件,就像在普通的 filesytem 上一样,所以你不必在意你通过 sftp 访问文件。
试着用mget
代替get
。
澄清:如果你在你要复制的目录内,mget
*会工作;如果你做这样的操作:
sftp> cd dir_to_get
sftp> mget *
,它将得到该目录中的所有文件。但是,它不会递归获取任何子目录的内容。
与cp
一样:
scp -rp user@host:/path/to/dir dir
以上将保留原始文件和子目录的时间和模式。这对于备份的检索特别有用。