无法执行“ / bin / sh”:参数列表在perl上的时间太长

问题描述 投票:0回答:2

如果@file_to_tar中有许多文件,perl脚本中的以下命令将失败,但是如果数组(@file_to_tar)中的文件较少,则可以正常工作。

我的$ tar_command =“ cd $ ProcVars-> {dropbox_dir}; tar -cvzf SmartMiles。$ ProcVars-> {batch_nb} .tar.gz -P @file_to_tar --remove-files”;

有人可以帮我解决这个问题。

perl tar
2个回答
2
投票

最好的方法是使用tar选项将很长的文件列表传递给--from-file

tar -czf myarchive.tar.gz -P --from-file=$filelist --remove-files

您也可以使它通过使用--from-file=-从标准输入中读取文件列表

请参见https://www.gnu.org/software/tar/manual/html_node/files.html以获取更多信息。


1
投票

您可能考虑使用Archive :: Tar Perl模块而不是调用shell命令。特别是“ create_archive”方法。这也可以避免由Perl代码调用的shell解释的文件名中的特殊字符或空格引起的任何潜在问题。

© www.soinside.com 2019 - 2024. All rights reserved.