我正在研究一个工具来获取埋在远程系统上一个非常大的文件中的数据。 将整个文件复制过来是不切实际的,我需要的所有数据都存在于文件的前1000个字节内。 我知道我可以开始获取,只是取消它与^ C获得一个部分文件,但是这将是困难的(如果不是不可能)自动化与任何一致性。
我想告诉我的ftp客户端只抓取远程文件的x个字节,并尽快退出。 我发现有几个windows客户端进行部分下载,但是我还没有在ftp手册页上find任何东西,而且在线文档也很less。
我发现这个HowTo: http : //cdsarc.u-strasbg.fr/doc/ftp.htxbuild议使用以下语法:
ftp> get bigfile.dat:0-5000 bigfile.nxt
我不清楚这是否应该在客户端或服务器上实现,但无论是哪种情况,似乎都不适用于我的环境。 (标准的linux ftp客户端连接到在z / OS上运行的FTP服务器)
即使在linux标准ftp客户端和windows上的filezilla服务器之间进行尝试时,我的尝试也会以下面的方式失败
ftp> get green.gif:0-10c local: green.gif:0-10c remote: green.gif:0-10c 227 Entering Passive Mode (9,42,91,226,4,105) 550 File not found
所以:0-10c被解释为文件名的一部分。 失败。 有什么想法吗?
使用curl。 从手册页:
-r/--range <range> (HTTP/FTP/FILE) Retrieve a byte range (ie a partial document) from a HTTP/1.1, FTP server or a local FILE. Ranges can be spec- ified in a number of ways. 0-499 specifies the first 500 bytes 500-999 specifies the second 500 bytes -500 specifies the last 500 bytes 9500- specifies the bytes from offset 9500 and forward 0-0,-1 specifies the first and last byte only(*)(H) 500-700,600-799 specifies 300 bytes from offset 500(H)
但是请注意,服务器必须支持SIZE扩展才能工作。
我想你想用这个curl
从手册页:
-r/--range <range> (HTTP/FTP/FILE) Retrieve a byte range (ie a partial document) from a HTTP/1.1, FTP server or a local FILE. Ranges can be spec‐ ified in a number of ways. 0-499 specifies the first 500 bytes 500-999 specifies the second 500 bytes -500 specifies the last 500 bytes 9500- specifies the bytes from offset 9500 and forward
这样的scheme在很大程度上取决于服务器的实现。 一些服务器比其他服务器支持更多的function。
我会研究一些分割文件的方式,或者考虑一个自定义的应用程序来发送你要求的范围。