linux - lftp + bash 脚本 + 变量

标签 linux variables queue mirror lftp

我正在使用lftp从外部服务器镜像文件,但现在我需要的是在成功下载后重命名源目录(在远程服务器上)。基本上我需要的是在远程服务器列表目录上打开连接,下载名称以“todo”开头的所有目录,即todo.20121019,成功后我必须将下载的目录重命名为“done.20121019”。服务器上可能有多个目录。

远程 FTP 服务器仅在事件连接的情况下工作。

#!/bin/bash

directories=`lftp -f lftp_script_file.lf |grep done|awk '{print $NF}'`

for i in $directories
  do
    echo $i //here I get list of directories that should be downloaded and renamed
  done

lftp_script_file.lf 仅列出目录:

set ftp:passive-mode false;
open ftp://user:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="86f6e7f5f5a2c6b7b6a8b7b6a8b7b6a8b7b4b5" rel="noreferrer noopener nofollow">[email protected]</a>
ls my_sub_dir/

有没有办法:

  1. 打开与 ftp 服务器的连接
  2. 查找我要下载的目录
  3. 将这些目录添加到队列并下载
  4. 重命名远程服务器上的目录

在批处理文件中?

我试图实现的是列出目录,找到有趣的目录,下载并重命名,但我找不到通过 bash 脚本和“set ftp:passive-mode false”将目录列表发布到 lftp 的方法。

最佳答案

为了能够将变量替换为lftp命令,请使用如下内容:

lftp -e "cmd1;cmd2"

关于linux - lftp + bash 脚本 + 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982750/

相关文章:

variables - 通过 Ansible "terraform"模块执行 Terraform。需要一组字符串

javascript - 动态访问Javascript数组

laravel - Laravel 中的 Job、Queue 和 Worker 有什么区别?

java - 队列<整数> q = new LinkedList<整数>()

php - 将 PHP 音频和视频上传链接到 Linux 服务器上的 FFMPEG

linux - 如何在 Linux 上根据 CPU 能力进行运行时绑定(bind)

python - 线程功能后文件路径未保存

c - X11 改变屏幕方向 Debian

linux - 如何使命令 ping 输出我 ping 的域名?

java - 为什么 JavaFX 中没有 ObservableQueues?