¿Alguien puede decirme si es posible canalizar | esto sin tener que crear un archivo físico en cualquier lugar entre A y B.tar.gz?
Esto es lo que estoy tratando de hacer:
- Presentar un
- Cambiar el nombre de A a B
- Tar B.tar
- gzip -9 B.tar.gz
Así por ejemplo:
cp A B | tar cvf - B | gzip -9 B.tar.gz
cp A B
?mv
.A
aB
primera.Respuestas:
Los siguientes ejemplos se pueden usar para evitar crear archivos intermedios:
alquitrán con gzip:
tar cf - A | gzip -9 > B.tar.gz
gzip sin alquitrán:
gzip -9c A > B.gz
alquitrán sin gzip:
tar cf B.tar A
Renombrar (mover)
A
aB
primero no tiene sentido para mí. Si esto es así, simplemente coloque unmv A B &&
antes de cualquiera de los comandos anteriores e intercambieA
conB
él.Ejemplo con alquitrán y gzip:
mv A B && tar cf - B | gzip -9 > B.tar.gz
fuente
Depende de tu versión de tar
Si tiene la versión que admite transformaciones de miembros (--transform o --xform), simplemente puede hacer
el | gzip -9> B.tar.gz se puede evitar si su tar admite la opción -z
Si su versión de tar no es compatible con --transform, primero tendrá que copiar el archivo, por ejemplo
Sin embargo, si solo está comprimiendo un archivo, ¿por qué no omitir la parte de alquitrán todos juntos y simplemente hacer
fuente
Si está utilizando
cp
para hacer una copia con un nombre / ubicación diferente, simplemente incluya el nombre de ruta completo / final que desea al crear su archivo .gzip completo:fuente
tar -czf - some-folder > some-archive.tar.gz
?