我怎么能ftp多个文件?

时间:2009-11-19 06:59:34

标签: ftp

我有两个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中的相应模块中?

6 个答案:

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

我使用Expectlftp和递归函数的组合来遍历目录结构。

答案 4 :(得分:-1)

如果文件系统支持符号链接或硬链接,我会使用简单的wget镜像ftp服务器。在其中一个当你正在尝试攻击目录v11_0以指向75_0时,wget将不知道其中的差异。

服务器a:

  1. 转到/ project / servera
  2. 忘了整件事。 (这应该将它们全部放在/ project / servera / miabc / v11_0)
  3. 服务器b:

    1. 转到/ project / serverb
    2. 创建一个目录/ project / serverb / miabc / 75_0,将其链接到/ project / servera / v11_0:
      • ln -s /project/serverb/miabc/75_0 /project/servera/v11_0
    3. wget serverb,当wget尝试在75_0中进入cwd时,将会在/ project / servera / v11_0
    4. 中找到它

      不要让项目比它需要的更难:阅读wget和ln上的文档。如果wget不遵循符号链接,请提交错误报告,如果您的FS支持,则使用硬链接。

答案 5 :(得分:-2)

我建议您先登录任何服务器,然后转到适当的路径miabc / v75_0 / a / b / c /。从这里你需要sftp到另一台服务器。

  1. sftp user @ servername
  2. 转到需要转移文件的合适路径。
  3. 编写命令mget *