He creado un archivo tar.gz (usando la GUI, no la línea de comando). ¿Cómo puedo actualizarlo con un comando para agregar nuevos archivos y actualizar también los archivos modificados?
Normalmente usarías la bandera -u para esto. Desde la página de manual de tar:
-u, --update
only append files newer than copy in archive
así que esta secuencia hará lo que necesitas:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
Si desea actualizar un archivo en particular en el *.tar.gzarchivo, simplemente haga lo siguiente:
Ingrese videsde donde tarestá disponible el archivo
/home>vi
Por ejemplo, si desea modificar simple.tar.gz que está en el /home/test/directorio, el:
/home/test>vi
Y en el editor vacío, ingrese :n simple.tar.gzy presione Enter
, obtendrá la lista de carpetas y archivos, mueva el cursor donde desee modificar y haga clic Enter. Se mostrará el vieditor del archivo en particular. Luego iopción para cambiar el archivo. Después del cambio exitoso. Presione la Esctecla y elija :wqescribir y salir del archivo. Luego, use :qpara salir de la lista de archivos.
Si va a hacer esto repetidamente, una optimización puede ser:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi
Respuestas:
Normalmente usarías la bandera -u para esto. Desde la página de manual de tar:
así que esta secuencia hará lo que necesitas:
Para una mirada un poco más detallada, vea aquí: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
fuente
Solución / Solución
No puede actualizar el archivo TAR comprimido ( .tar.gz ) en un solo paso. Pero, si tiene suficiente espacio libre, puede hacer esto:
Extraiga el archivo .tar del archivo .tar.gz :
gunzip filename.tar.gz
Actualice el archivo .tar sin comprimir con el
tar -u
comando:tar -uf filename.tar new_file
Comprima el archivo .tar actualizado :
gzip filename.tar
Acelerar
Si tiene una CPU multinúcleo, le recomiendo usar en
pigz
lugar degzip
extraer y crear archivos .gz . (pigz
es una implementación multiproceso degzip
)Simplemente reemplace
gzip
/gunzip
comandos apigz
/unpigz
.Manuales relacionados
fuente
Si desea actualizar un archivo en particular en el
*.tar.gz
archivo, simplemente haga lo siguiente:Ingrese
vi
desde dondetar
está disponible el archivoPor ejemplo, si desea modificar simple.tar.gz que está en el
/home/test/
directorio, el:Y en el editor vacío, ingrese
:n simple.tar.gz
y presione Enter , obtendrá la lista de carpetas y archivos, mueva el cursor donde desee modificar y haga clic Enter. Se mostrará elvi
editor del archivo en particular. Luegoi
opción para cambiar el archivo. Después del cambio exitoso. Presione la Esctecla y elija:wq
escribir y salir del archivo. Luego, use:q
para salir de la lista de archivos.fuente
Si va a hacer esto repetidamente, una optimización puede ser:
fuente