tar 命令不生成 .tar.gz 文件
tar command does not produce the .tar.gz file
我试图循环迭代,tar 每次迭代几个目录,然后比较它们的 md5 总和。我注意到我的第一个 tar 语句生成了比目录实际路径高一级的 tar 文件。即语句:
tar -czvf ${folder_name}.tar.gz /tmp/psk1/hadoop_validation$ENV/${folder_name}
在 /tmp/psk1/
中生成 ${folder_name}.tar.gz
而不是 /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 }'`
folder_name=`echo ${folder_path} | awk -F '/' '{print }'`
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
我在这里错过了什么?任何帮助将不胜感激。
谢谢。
正如 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
警告。不用担心。
我试图循环迭代,tar 每次迭代几个目录,然后比较它们的 md5 总和。我注意到我的第一个 tar 语句生成了比目录实际路径高一级的 tar 文件。即语句:
tar -czvf ${folder_name}.tar.gz /tmp/psk1/hadoop_validation$ENV/${folder_name}
在 /tmp/psk1/
中生成 ${folder_name}.tar.gz
而不是 /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 }'`
folder_name=`echo ${folder_path} | awk -F '/' '{print }'`
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
我在这里错过了什么?任何帮助将不胜感激。
谢谢。
正如 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
警告。不用担心。