我试图在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吗?
感谢任何帮助,谢谢!
答案 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应该在同一台服务器上正常运行。你可能想研究那里出了什么问题。