尽管日志另有说明,但tar并不会归档所有文件

时间:2016-03-31 18:10:06

标签: bash shell tar

我正在运行此命令行:

mysql -h $dbHost -u $dbUser --password=$dbPasswd -N -B -e \
"use cms; select uri from file_managed;" | grep public: | sed \
's/public:\/\//\/amk_aco_data\/cms\//g' | xargs -d "\n" tar -czvf /tmp/cmspublicfile.tgz 

直到一周前,它一直很好用。 但现在不是归档~2k文件,而是归档中只有300个文件。 如果我单独运行它并将SQL查询保存到文件:

mysql -h $dbHost -u $dbUser --password=$dbPasswd -N -B -e \ 
"use cms; select uri from file_managed;" | grep public: | sed \ 
's/public:\/\//\/amk_aco_data\/cms\//g' > files.toarchive 

然后

tar -T files.toarchive -czvf /tmp/cmspublicfile.tgz, 

它按预期工作,我在归档中得到了~2k文件。 我猜这个问题与xargs有关,但我不知道为什么它会停止工作。

一些解释:SQL查询打印出文件URL列表。

任何人都可以告诉我应该检查什么?

1 个答案:

答案 0 :(得分:1)

你跳过xargs和usr tar -T - 它将从stdin中读取文件名

所以lat部分将是:

| tar -T - -czvf /tmp/cmspublicfile.tgz

更类似于工作版

完整的命令应该是这样的:

mysql -h $dbHost -u $dbUser --password=$dbPasswd -N -B -e \
"use cms; select uri from file_managed;" | grep public: | sed \
's/public:\/\//\/amk_aco_data\/cms\//g' | tar -czvf /tmp/cmspublicfile.tgz -T -