任何人都可以帮我写一个shell脚本来从Linux / UNIX系统下载文件吗?
问候
答案 0 :(得分:0)
在UNIX系统(如Linux和OSX)上,您可以访问名为rsync的实用程序。它默认安装,是用于从其他UNIX系统下载文件的工具。
它是cp
(复制)命令的替代品,但功能更强大。
要使用SSH将目录从远程系统复制到您的目录,您可以这样做:
rsync username@hostname:path/to/dir .
(注意最后的点,这意味着'请将所有内容放在这里',您还可以提供应放置文件的本地目录的名称。)
要仅下载某些特定文件,请使用:
rsync 'username@hostname:path/to/dir/*.txt' .
(注意引号:如果省略它们,你的shell将尝试在本地扩展*.txt
部分,将失败并给你一个错误。)
有用的标志:
--progress
:显示进度条
--append
:如果文件只有部分下载,请从中断处继续
我发现rsync
实用程序非常有用,我已经在shell中为它创建了一个别名,并将其用作超级副本':
alias cpa 'rsync -vae ssh --progress --append'
使用该别名,在机器之间复制文件就像在本地复制文件一样简单:
cpa user@host:file .
由于rsync
使用SSH,因此有助于设置私钥/公钥对,因此您不必每次都输入密码:
How do I setup Public-Key Authentication?
此外,您可以在.ssh/config
文件中记下您的用户名,并为远程主机命名:read about it here。
例如,我有这样的事情:
Host panda
Hostname panda.server.long.hostname.com
User rodin
使用此设置,我从panda
服务器下载文件的命令只是:
cpa panda:path/to/my/files .
并且非常高兴。