使用 7zip 解压缩在 Unix 中压缩的文件

Unzip a file zipped in Unix using 7zip

我的目标是将 Unix 进程创建的文件作为 excel 文件发送给自己。所以我使用下面的命令来实现它。

tr -d '\t' < PROGRAM_CREATED_FILE | sed -e 's/\//g' | awk 'BEGIN{FS=">"; OFS="\t"} '{=}1' > file.xls
gzip -9 file.xls
echo "test mail" | sendxchange -a "file.xls.gz" -s "Report" my_mail_id

在我的邮箱收到文件后,我将其保存在 Windows 机器中。我尝试使用 7zip 提取存档。它尝试提取 Data error in file.xls。文件已损坏

需要这方面的帮助。

谢谢

您的压缩文件是二进制的,而不是 Mail 希望发送的 ASCII。您可以在发送前 uuencodebase64-encode,如下所示:

gzip -9 < file.xls | uuencode -m file.xls.gz > file.xls.gz
... sendxchange -a "file.xls.gz" ...

使用上面的 -m 给出 base64 编码,将其省略会导致 uuencoding.

在 Windows 结束时,您需要再次解码文件 - 为此您可以使用 Microsoft 的 certutil 工具(如果您使用 base64 编码),或来自 SourceForge 的 Unix 实用程序。

当通过FTP传输时,一定要先设置BIN模式,否则你可能会传输到ASCII模式,这对二进制文件不利,因为它转换了某些行结束符字符到愚蠢的 Windows CR/LF 组合,并且可能出现在您的二进制文件中并得到转换 - 这不是您想要的。