我有两个unix服务器,我需要ftp一些文件。 目录结构几乎相同,只是略有不同,例如:
server a server b
miabc/v11_0/a/b/c/*.c miabc/v75_0/a/b/c/
miabc/v11_0/xy/*.h miabc/v11_0/xy/
有很多模块:
miabc
mfabc
除了11_0和75_0之外,它们内部的目录结构在两个服务器中是相同的。并且不同模块中的目录结构不同
如何使用FTP通过任何脚本语言(如awk,Perl,shell,ksh)将所有模块中的所有文件FTP到第二台服务器b中的相应模块中?
答案 0 :(得分:1)
我想说如果你想使用Perl,你必须使用Net :: FTP。
有一次,我需要一个在FTP上区分目录/文件结构的脚本 服务器在本地硬盘上具有相应的目录/文件结构, 这导致我写this script。我不知道它是高效还是优雅,但你可能会找到一个或另一个 它的想法。
hth / Rene
答案 1 :(得分:0)
听起来你真的想要rsync。我试图避免任何编程来解决这个问题。
答案 2 :(得分:0)
看到您需要使用正确的目录路径来发送文件。 你可以用php创建小脚本。 php提供了很好的ftp函数。使用php你可以轻松ftp你的文件。但在此之前,一旦检查IIS服务器或文件zilla的ftp设置 我使用以下代码在ftp上发送文件,这是在php: -
$conn_id = ftp_connect($FTP_HOST) or die("Couldn't connect to ".$FTP_HOST);
$login_result =ftp_login($conn_id, $FTP_USER, $FTP_PW);
ftp_fput($conn_id, $from, $files, $mode) // ths is the function to put files on ftp
此代码仅供参考,使用前请先阅读php手册。
答案 3 :(得分:-1)
答案 4 :(得分:-1)
如果文件系统支持符号链接或硬链接,我会使用简单的wget
镜像ftp服务器。在其中一个当你正在尝试攻击目录v11_0
以指向75_0
时,wget将不知道其中的差异。
服务器a:
服务器b:
ln -s /project/serverb/miabc/75_0 /project/servera/v11_0
不要让项目比它需要的更难:阅读wget和ln上的文档。如果wget不遵循符号链接,请提交错误报告,如果您的FS支持,则使用硬链接。
答案 5 :(得分:-2)
我建议您先登录任何服务器,然后转到适当的路径miabc / v75_0 / a / b / c /。从这里你需要sftp到另一台服务器。