Может кто-нибудь сказать мне, возможно ли напрямую сжать стандартный вывод?
Я хотел бы сделать это за один шаг, не создавая временный файл files.txt ...
Пример:
cat file* > files.txt
tar -czf files.tar files.txt
rm files.txt
Возможно ли это?
В этом случае вы можете обойти часть tar
в .tar.gz
, поскольку вам не нужно обрабатывать несколько файлов, и сразу перейти к gzip
для сжатия.
Для сжатия
gzip < file > file.gz
Для распаковки
gzip -d file.gz
или эквивалентно
gunzip file.gz
Вы также можете использовать утилиты сжатия bzip2
и xz
с похожим синтаксисом. xz
обычно создает сжатые файлы меньшего размера, чем gzip
или bzip2
.
(Сноска)
Если вы создаете сжатый файл и затем используете scp
для его передачи, вы можете использовать встроенное сжатие:
cat file | ssh -C user@remote 'cat >> remote_file'
или
scp -C file user@remote:/path/on/remote
или
rsync -avz file user@remote:/path/on/remote
Отключите опцию f.
Что-то, что я сделал, выглядит следующим образом:
tar -cz *.xml
Это печатает на стандартный вывод. Затем я мог бы использовать некоторый код для входа в ssh на сервер tar / gzip и сохранить их все локально, не создавая новый файл на сервере.