如何在Linux上自动执行FTP文件传输?

时间:2017-12-08 15:23:34

标签: linux bash ftp

我试图在linux上自动执行FTP文件传输,以便在我们的Intranet上保留一些备份。我的主要问题是我无法使用SCP,因为SHH打破了我们的samba服务器和其他东西,所以我们坚持使用vsftp。

我可能要做的是,每周都要创建一个在Cron中运行的bash。这是我在互联网上找到的一个例子:

#!/bin/bash
HOST='your.ftp.site'
USER='remoteusername'
PASSWD='remotepasswd'

ftp -n -v $HOST << EOT

   ascii
    user $USER $PASSWD
    prompt
   [COMMANDS GO HERE]
    bye
    EOT

但我真的无法找到除此之外的代码来在两台计算机之间传输文件。它会是一个简单的CAT吗?

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

有几种可能性: 第一:使用lftp。当然你应该阅读精美的手册,但作为一个例子:

echo "mirror --reverse --delete" | lftp -u $username,$password $mysite

或者使用expect:

spawn ftp mysite
expect "Login:"
send "username\r"
expect "ssword:"
send "S0m3ting\r"
expect "ftp>"
send "prompt\r"
expect "ftp>"
send "cd somewher\r"
expect "ftp>"
send "mget allfiles.*\r"
expect "ftp>"
send "mput loadsofotherfiles.*\r"
expect "ftp>"
send "bye\r"

(注意:这将作为第一个测试,但你不应该在生产中这样运行)

另请注意,man ftp会为您提供[COMMANDS(那)GO HERE]的列表。

作为旁注:ssh和SAMBA应该在同一台服务器上正常运行。你可能想研究那里出了什么问题。