Shell脚本从UNIX系统目录下载文件

时间:2016-02-02 07:05:05

标签: linux shell

任何人都可以帮我写一个shell脚本来从Linux / UNIX系统下载文件吗?

问候

1 个答案:

答案 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 .

并且非常高兴。