tar 命令的问题

Issues with tar command

我想弄清楚为什么以下 tar 命令不起作用 -

我已经尝试了以下 2 个版本,但都不起作用 -

版本 1

tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv'

我看到的错误是

tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.

版本 2

tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv' .

我看到的错误是

    tar: 
/home/jhonst/data_lake/1m/*.UX.csv: Cannot open: No such file or directory
    tar: Error is not recoverable: exiting now

请有人指导我做错了什么

当你这样做时:

tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar /home/jhonst/data_lake/1m/*.UX.csv

您将获得:

tar -t -f /home/jhonst/data_lake/1m/UX.tar
home/jhonst/data_lake/1m/file1.UX.csv
home/jhonst/data_lake/1m/file2.UX.csv
...

哪个不是最好的。删除 tar 存档中的“路径”有两种可能性:

  • 使用 cd 进入目录(在子 shell 中或使用 pushd/popd 如果你想 return 到 [=34 之后的原始目录=]命令):
cd /home/jhonst/data_lake/1m && tar -c --use-compress-program=pigz -f UX.tar *.csv
# returning to the same place after the tar:
(cd /home/jhonst/data_lake/1m && tar -c --use-compress-program=pigz -f UX.tar *.csv)
# or:
pushd /home/jhonst/data_lake/1m && {
    tar -c --use-compress-program=pigz -f UX.tar *.csv
    popd
}
  • 使用GNU的-C选项tar,不太好办:
dirpath=/home/jhonst/data_lake/1m
files=("$dirpath"/*.csv)
tar -c --use-compress-program=pigz -f "$dirpath"/UX.tar -C "$dirpath" "${files[@]#$dirpath/}"