似乎是一个愚蠢的问题,但我无法通过谷歌或手册页找到任何东西...我确定它是我的报价...当我从命令行运行以下,它按预期运行/ desired(即只有没有任何目录的文件):
tar cfz /path/to/file.tar.gz --directory="/path/to/" .
但是,我在perl中有这个类似的行,虽然有一个变量作为路径($ folder_errors ='/ path / to'):
system('tar cfz '."\"${folder_errors}\"/errors.tar.gz --directory=\"\"${folder_errors}\"/\" .");
也尝试了
system('tar cfz '."\"${folder_errors}\"/errors.tar.gz --directory=\"${folder_errors}\"/ .");
具有相同(意外)的结果。
它压缩正确的文件,但是,压缩文件内部是所有文件所在的文件结构./
。
答案 0 :(得分:-1)
尝试使用perl的引用运算符。 qq[...]
就像双引号一样,除非你不必逃避其中的文字"
。
system qq[tar cfz "$folder_errors/errors.tar.gz" --directory="$folder_errors"];
答案 1 :(得分:-1)
您的报价似乎有所纠正。您是否注意到要在归档文件所在的同一目录中创建tar.gz?我想你是在暴露自己的烦恼。如果你不能改变tar的目标目录,你应该避免递归:
system qq[tar cfz "$folder_errors/errors.tar.gz" --exclude "./errors.tar.gz" --directory="$folder_errors" . ];