无法解压文件?

时间:2009-08-28 06:59:04

标签: linux unix ftp shell tar

我编写了一个shellcript,试图从ftp服务器中提取tar文件并在本地解压缩。我需要从tar存档中提取特定文件。 tarfile的文件名包含日期;我需要能够根据这个日期选择一个tar文件。

abc_myfile_$date.tar是我从ftp服务器提取的文件的格式。

我目前的代码如下:

for host in ftpserver
do
ftp -inv host <<END_SCRIPT
user username password
prompt
cd remotepath
lcd localpath
mget *myfile_$date*.tar
quit
END_SCRIPT
done

for next in `ls localpath/*.tar`
do
tar xvf $next *required_file_in_tar_file*.dat
done

当我运行脚本时无法解压文件

只有当我提到该文件的确切名称时,才能从ftp服务器获取单个tar文件。我想获得一个名称中包含myfile_$date的文件。在此之后,我想将其解压缩到本地路径,以获取名称由我的required_files组成的tar文件中的指定文件。

3 个答案:

答案 0 :(得分:2)

您获得.tar文件,但使用z选项对其进行解压缩。压缩文件(需要z的文件)通常具有.tar.gz前缀。尝试

tar xvf $next *required_file_in_tar_file*.dat

答案 1 :(得分:2)

首先,如果要对从服务器获取的文件名使用通配符,则需要使用mget而不是get。通配符文件扩展(*)不适用于get命令 一旦你拉动文件,tar操作将按预期工作,大多数现代版本的linux / bsd都有一个'智能'tar,它不需要'z'命令来指定tar文件被压缩 - 他们会弄清楚tarball是自己压缩并自动解压缩,系统上提供了适当的压缩/解压缩工具(bzip2用于.jz文件,gzip用于.gz文件)。

答案 2 :(得分:1)

我不太确定,但如果要下载多个文件,FTP协议是否没有命令mget? (而不是get