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.gzActualice el archivo .tar sin comprimir con el
tar -ucomando:tar -uf filename.tar new_fileComprima el archivo .tar actualizado :
gzip filename.tarAcelerar
Si tiene una CPU multinúcleo, le recomiendo usar en
pigzlugar degzipextraer y crear archivos .gz . (pigzes una implementación multiproceso degzip)Simplemente reemplace
gzip/gunzipcomandos apigz/unpigz.Manuales relacionados
fuente
Si desea actualizar un archivo en particular en el
*.tar.gzarchivo, simplemente haga lo siguiente:Ingrese
videsde dondetarestá 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.gzy presione Enter , obtendrá la lista de carpetas y archivos, mueva el cursor donde desee modificar y haga clic Enter. Se mostrará elvieditor del archivo en particular. Luegoiopció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.fuente
Si va a hacer esto repetidamente, una optimización puede ser:
fuente