unix中从服务器1到服务器2的ftp文件

unix中从服务器1到服务器2的ftp文件,unix,ftp,shell,Unix,Ftp,Shell,我是一个不折不扣的人 我目前有一个cronjob,每15mts运行一次,检查文件是否存在 如果它存在,它将获取文件并进行处理,然后将其删除 现在,我不想删除它,而是想制作一个副本并将其ftp到Server2 下面是删除脚本。我想对其进行修改,使其生成文件的副本,然后将其ftps'到服务器2 rm -f /apps/pmserver/data/inbound/WPER594_COMPANY.CSV.proc 查看ncftpput和ncftp包。这是伟大的脚本ftp 如果你不是死心塌地使用ftp,

我是一个不折不扣的人

我目前有一个cronjob,每15mts运行一次,检查文件是否存在

如果它存在,它将获取文件并进行处理,然后将其删除

现在,我不想删除它,而是想制作一个副本并将其ftp到Server2

下面是删除脚本。我想对其进行修改,使其生成文件的副本,然后将其ftps'到服务器2

rm -f /apps/pmserver/data/inbound/WPER594_COMPANY.CSV.proc

查看ncftpput和ncftp包。这是伟大的脚本ftp


如果你不是死心塌地使用ftp,我实际上只会使用scp

scp /apps/pmserver/data/inbound/WPER594_COMPANY.CSV.proc username@server:/path/to/dest
我将使用rsync:

THETIME=`date "+%Y-%m-%d_%H-%M-%S"`
rsync -avz -e ssh remoteuser@remotehost:/remote/dir/WPER594_COMPANY.$THETIME.CSV.proc /apps/pmserver/data/inbound/WPER594_COMPANY.CSV.proc
rm -f /apps/pmserver/data/inbound/WPER594_COMPANY.CSV.proc

您可以通过以下方式通过脚本执行FTP:

ftp -n $serverName <<!
verbose
ascii
quote user $username
quote pass $password
cd $targetdir
put $filename
quit
!
ftp-n$serverName

以上假设您已经在脚本中设置了以$开头的变量。感叹号之间的内容需要根据您想要执行的操作进行更改—是ascii传输还是二进制传输,等等—但希望您能理解。

我认为命令行putty(或PSFTP)将是一个不错的选择。这是因为它通过SSH端口22打开一个隧道,并使用常规FTP协议控件。这将是最简单的。最困难的部分是,您必须编译源代码以获得PSFTP二进制文件,但一旦您在业务中完成了这项工作


这是SCP的替代方案,但实际上SCP可能更容易,因为linux系统通常都预装了它。

我认为这对他的ssl要求不起作用,是吗?请查看这种方法的预共享密钥。这是一个让密码远离命令行的好方法。是的,我应该澄清一下,我假设预共享密钥是为这个场景设置的。将您的公钥放入您要传输到的主机的授权密钥中。这看起来既酷又简单。虽然我不担心在脚本中输入密码,因为我正在将文件从prod复制到dev服务器…但是我希望了解预共享密钥方法…如何实现此方法的任何信息。。。正如我所说,我在unix中使用noob感谢大家的及时响应。通常,您可以执行ssh密钥生成,然后获取公钥并将其放入目标上.ssh文件夹中的authorized_keys文件中。请看:只是检查一下,但你实际上是指ftps,还是那是一个放错位置的撇号?