tar命令不会产生.tar.gz文件

安曼瓦拉普(Hemanth Annavarapu)

我正在尝试循环访问,每次迭代都会压缩两个目录,然后比较两个目录的md5总和。我注意到我的第一个tar语句产生的tar文件比目录的实际路径高一级。即声明:

tar -czvf ${folder_name}.tar.gz /tmp/psk1/hadoop_validation$ENV/${folder_name}

产生${folder_name}.tar.gzin/tmp/psk1/而不是/tmp/psk1/hadoop_validation$ENV/

和第二个tar语句:

tar -czvf ${folder_name}.tar.gz ${edge_base_dir}/wlossf$ENV/app/${folder_name}

根本不生成tar文件。即使在实际路径之上的一个级别上,我也找不到它。

hdfs dfs -ls /haas/wlf/wlossf$ENV/app | while read rec; do
    echo $rec
    folder_path=`echo ${rec} | awk -F ' ' '{print $8}'`
    folder_name=`echo ${folder_path} | awk -F '/' '{print $6}'`

    if [ ! -z ${folder_name} ] && [ ! -z ${folder_path} ]; then

        hdfs dfs -get ${folder_path} /tmp/psk1/hadoop_validation$ENV/   

        if [ $? -eq 0 ]; then
            echo "Hadoop to local copy job Successful"
        else 
            echo "Hadoop to local copy job Failed"
        fi

        tar -czvf ${folder_name}.tar.gz /tmp/psk1/hadoop_validation$ENV/${folder_name}
        hadoop_md5=$(md5sum /tmp/psk1/hadoop_validation$ENV/${folder_name}.tar.gz)

        tar -czvf ${folder_name}.tar.gz ${edge_base_dir}/wlossf$ENV/app/${folder_name}
        edge_md5=$(md5sum ${edge_base_dir}/wlossf$ENV/app/${folder_name}.tar.gz)

        if [ ${hadoop_md5} == ${edge_md5} ]; then
            echo "${folder_name} is good"
        else
            echo "${folder_name} is bad"
        fi  
    fi      
    echo ${folder_name}
    echo ${folder_path}
done

我在这里想念什么?任何帮助,将不胜感激。

谢谢你。

jas_raj

正如mouviciel在评论中所说,tar默认情况下会在当前工作目录中创建文件。

只需在tar.gz文件前添加文件夹前缀,它将在您需要的位置创建它:

tar -czvf /tmp/psk1/hadoop_validation$ENV/${folder_name}.tar.gz /tmp/psk1/hadoop_validation$ENV/${folder_name}

请注意,由于您将在要归档的同一文件夹中创建tar file changed as we read it,因此在输出中会收到一条警告。没什么好担心的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章