gpt4 book ai didi

ubuntu - 如何使用命令行从 FTPS 服务器递归获取文件?

转载 作者:行者123 更新时间:2023-12-04 18:52:23 31 4
gpt4 key购买 nike

我需要 下载文件结构 (超过 4GB)来自 FTPS 服务器 (基于 TLS 协议(protocol)的隐式 FTP)。不幸的是 wget不支持 FTPS,但是 curl does .然而curl不支持递归。

我需要一个 命令行工具 Ubuntu 上的解决方案。

任何想法?

最佳答案

没有找到解决方案,所以我写了一个简单的 ruby​​ 脚本,它可以作为每个人的起点:

#!/usr/bin/env ruby
# encoding: utf-8

require 'optparse'

FILENAME_MATCH_REGEXP=/^[d\-rwx]+ [0-9]+ \w+ \w+[ ]+\d+[ ]+[a-zA-Z]+[ ]+\d+[ ]+\d+[ ]+(.*)$/

options = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: curl_ftp_get_recursive.rb [options] url directory"

opts.on("-v", "--[no-]verbose", "Run verbosely") do |o|
options[:verbose] = o
end

options[:curl_options] = '-sS'
opts.on("-c", "--curl-options OPTIONS", "Curl options") do |o|
options[:curl_options] += " #{o}"
end

options[:output_dir] = '.'
opts.on("-o", "--output DIR", "Output directory, default=current directory") do |o|
options[:output_dir] = o
end
end

begin
opts.parse!
raise "Invalid number of arguments" if ARGV.count != 2
rescue Exception => e
p "#{$0}: #{e.message}"
p opts
exit 1
end

# Remove trailing '/' if any
url = ARGV[0].sub /\/*$/, ''
root_dir = ARGV[1].sub /\/*$/, ''
options[:output_dir] = options[:output_dir].sub /\/*$/, ''

def get_dir options, url, dir
p "Reading directory '#{dir}'..." if options[:verbose]

output = `/usr/bin/curl #{options[:curl_options]} "#{url}/#{dir}"/`
exit 1 if $? != 0
dir_list = output.split "\n"
dir_list.each do |line|
p "Processing line '#{line}'..." if options[:verbose]
file_name = "#{dir}/#{line.match(FILENAME_MATCH_REGEXP)[1]}"
local_dir = "#{options[:output_dir]}/#{dir}"
if line.match /^d/
get_dir options, url, file_name
else
p "Getting file '#{file_name}'..."
`mkdir -p "#{local_dir}"`
exit 1 if $? != 0
`/usr/bin/curl -o "#{options[:output_dir]}/#{file_name}" #{options[:curl_options]} "#{url}/#{file_name}"`
exit 1 if $? != 0
end
end
end

get_dir options, url, root_dir

一个使用示例:
./curl_ftp_get_recursive.rb -v -c --insecure ftps://MyUSerName:MayPassword@MyHost:MyPort '/Directory to copy'

关于ubuntu - 如何使用命令行从 FTPS 服务器递归获取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821086/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com