我正在运行此命令行:
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列表。
任何人都可以告诉我应该检查什么?
答案 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 -