如果@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”;
有人可以帮我解决这个问题。
最好的方法是使用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以获取更多信息。
您可能考虑使用Archive :: Tar Perl模块而不是调用shell命令。特别是“ create_archive”方法。这也可以避免由Perl代码调用的shell解释的文件名中的特殊字符或空格引起的任何潜在问题。