Может кто-нибудь сказать мне, если это возможно, чтобы труба | это без необходимости создавать физический файл где-нибудь между A и B.tar.gz?
Вот что я пытаюсь сделать:
- Файл А
- Переименовать в B
- Tar B.tar
- gzip -9 B.tar.gz
Так, например:
cp A B | tar cvf - B | gzip -9 B.tar.gz
cp A B
?mv
.A
вB
первую очередь.Ответы:
Следующие примеры могут использоваться, чтобы избежать создания промежуточных файлов:
tar с gzip:
tar cf - A | gzip -9 > B.tar.gz
GZIP без смолы:
gzip -9c A > B.gz
tar без gzip:
tar cf B.tar A
Переименование (перемещение)
A
вB
первую очередь не имеет смысла для меня. Если это предназначено, то просто поставитьmv A B &&
перед тем любой из указанных выше команд и обменаA
сB
там.Пример с tar и gzip:
mv A B && tar cf - B | gzip -9 > B.tar.gz
источник
Это зависит от вашей версии tar
Если у вас есть версия, которая поддерживает преобразования членов (--transform или --xform), вы можете просто сделать
| gzip -9> B.tar.gz можно избежать, если ваш tar поддерживает опцию -z
Если ваша версия tar не поддерживает --transform, вам сначала нужно просто скопировать файл, например
Однако, если вы сжимаете только один файл, почему бы не пропустить часть tar все вместе и просто сделать
источник
Если вы используете
cp
для создания копии с другим именем / местоположением, просто включите полный / окончательный путь, который вы хотите при создании завершенного файла .gzip:источник
tar -czf - some-folder > some-archive.tar.gz
?